Thời gian/Số
Trình chuyển đổi Float IEEE 754
Số thập phân ↔ biểu diễn nhị phân IEEE 754 (độ chính xác đơn hoặc kép) — dấu, số mũ, phần định trị, giá trị đặc biệt.
Computers store fractional numbers in binary under the IEEE 754 standard — a sign, an exponent, and a mantissa, packed into a fixed number of bits. This tool shows that representation for any decimal number and parses it back into a number.
How to use it
- Number → bits: enter a decimal number to get its breakdown into sign, exponent, and mantissa for single (32-bit) or double (64-bit) precision.
- Bits → number: paste a bit representation to get the decimal value back.
- Special values (infinity, NaN, signed zero) are recognized and explained separately.
Common uses
- Understanding why 0.1 + 0.2 doesn't exactly equal 0.3 in most programming languages — a concrete demonstration of rounding error.
- Studying float's internal representation to understand precision limits in financial or scientific calculations.
- Parsing a binary dump or network packet where numbers are transmitted in IEEE 754 format.
Things to keep in mind
Most decimal fractions (0.1, for example) have no exact binary representation — that's the root cause of the typical rounding errors seen in calculation results.
Comparing floating-point numbers for exact equality (===) is unreliable — check instead whether the difference is smaller than a small threshold (epsilon).
Bài viết về công cụ này: IEEE 754: vì sao 0.1 + 0.2 không bằng 0.3 trong code
Câu hỏi thường gặp
Sự khác biệt giữa độ chính xác đơn và kép là gì?
Độ chính xác đơn (float, 32 bit) cho khoảng 7 chữ số thập phân chính xác, độ chính xác kép (double, 64 bit) cho khoảng 15-17. Kiểu Number của JavaScript dùng độ chính xác kép.
Vì sao một số số thập phân bị mất độ chính xác?
IEEE 754 lưu số ở dạng nhị phân, và nhiều phân số thập phân (như 0.1) không có biểu diễn nhị phân hữu hạn chính xác — nên giá trị gần nhất có thể được lưu, kèm một sai số làm tròn nhỏ.
NaN, Infinity và -0 có nghĩa là gì?
NaN là kết quả của một phép toán không hợp lệ như 0/0. Infinity/-Infinity xuất hiện khi một giá trị vượt quá phạm vi biểu diễn được (ví dụ chia cho 0). +0 và -0 là hai biểu diễn bit khác nhau của số 0 có dấu, nhưng vẫn bằng nhau khi so sánh dưới dạng số.
Số phi chuẩn (subnormal) là gì?
Một chế độ biểu diễn đặc biệt cho các số có độ lớn quá nhỏ đối với định dạng thông thường — số 1 ngầm định ở đầu phần định trị bị bỏ qua, cho phép tiến dần đến số 0 với cái giá là mất một phần độ chính xác.
Làm sao để so sánh đúng các số thập phân thay vì kiểm tra bằng chính xác?
Thay vì a === b, hãy kiểm tra xem hiệu giữa hai số có nhỏ hơn một ngưỡng nhỏ (epsilon) hay không: Math.abs(a - b) < 1e-9. Sự bằng nhau chính xác gần như không bao giờ được đảm bảo do sai số làm tròn.