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

Common uses

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.

Bài viết: Thời gian/Số

Thời gian Unix: vì sao máy tính đếm thời gian từ năm 1970

Vì sao ngày 1 tháng 1 năm 1970 trở thành mốc thời gian tham chiếu cho hầu hết các hệ thống máy tính.

Biểu thức cron: cách giải mã lịch chạy tác vụ

Cách giải mã một biểu thức như */15 * * * * và biết chính xác khi nào tác vụ sẽ chạy.

Hệ đếm số: vì sao có hệ nhị phân, bát phân và thập lục phân

Vì sao màu #FF5733 trong CSS được viết bằng chữ số thập lục phân thay vì thập phân.

Phép toán bit: AND, OR và XOR hoạt động như thế nào ở cấp độ bit

AND theo bit khác gì với AND logic, và vì sao lại cần thao tác trên từng bit riêng lẻ của một số.

Chênh lệch ngày: vì sao đếm số ngày phức tạp hơn tưởng tượng

Vì sao trừ ngày một cách ngây thơ có thể cho kết quả sai vì năm nhuận.

Tính tuổi: vì sao không đơn giản chỉ là trừ năm

Vì sao chỉ đơn giản trừ năm sinh có thể cho ra tuổi lớn hơn thực tế một tuổi.

Múi giờ: vì sao UTC không giống với GMT

Vì sao UTC không bao giờ thay đổi hai lần một năm, trong khi giờ London (GMT/BST) thì có.

Máy tính thời lượng: cách cộng đúng giờ, phút và giây

Vì sao khi cộng phút và giây cần "chuyển" phần dư sang hàng tiếp theo, giống như trong phép cộng thập phân.

ISO 8601 Duration: cách viết một khoảng thời gian theo định dạng chuẩn

Vì sao PT1H30M có nghĩa là "1 giờ 30 phút", không phải "1 phút 30 giờ".

Số tuần: vì sao các quốc gia khác nhau đếm tuần khác nhau

Vì sao ngày 1 tháng 1 đôi khi thuộc tuần 52 hoặc 53 của năm trước theo chuẩn ISO 8601.

Số La Mã: một hệ thống không có số 0 và không có giá trị theo vị trí hoạt động ra sao

Vì sao IV có nghĩa là 4 chứ không phải 6, và quy tắc trừ hoạt động thế nào trong số La Mã.

Số thành chữ: vì sao cần biến chữ số thành từ ngữ

Vì sao các văn bản ngân hàng ghi số tiền cả bằng số lẫn bằng chữ cùng một lúc.