IEEE 754 浮点数转换器
把十进制数转换为 IEEE 754 半精度、单精度和双精度并可反向转换:十六进制与二进制位、指数、尾数、精确存储值和舍入误差。
| 格式 | 十六进制 | 存储的值(最短) | 舍入误差 |
|---|---|---|---|
| binary16 | 0x2E66 | 0.1 | -2.441e-5 |
| binary32(已选) | 0x3DCCCCCD | 0.1 | 1.490e-9 |
| binary64 | 0x3FB999999999999A | 0.1 | 5.551e-18 |
| 格式 | 符号 | 指数位 | 尾数位 | 偏置 | 最大有限值 | 最小规格化数 | 最小非规格化数 |
|---|---|---|---|---|---|---|---|
| binary16(半精度) | 1 | 5 | 10 | 15 | 65504 | 6.10352e-5 | 5.96046e-8 |
| binary32(单精度) | 1 | 8 | 23 | 127 | 3.40282e+38 | 1.17549e-38 | 1.40130e-45 |
| binary64(双精度) | 1 | 11 | 52 | 1023 | 1.79769e+308 | 2.22507e-308 | 4.94066e-324 |
计算机用 IEEE 754 二进制浮点数存储大多数非整数,而 0.1 或 1/3 无法被精确表示。本转换器展示一个数在半精度(16 位)、单精度(32 位 float)和双精度(64 位 double)下变成的精确位,把它们拆分为符号、指数和尾数,并输出真正存储的精确十进制值及舍入误差。它也能把十六进制或二进制位模式解码回数字,包括零、非规格化数、无穷大和 NaN。
使用方法
- 输入一个数(0.1 这样的十进制数、1/3 这样的分数、C 的十六进制浮点数、inf 或 nan),或粘贴一个位模式。
- 选择该值是数字,还是十六进制/二进制位。
- 选择半精度、单精度或双精度。
- 查看十六进制和二进制编码、字段拆分、精确存储值和误差;表格会比较三种格式。
计算公式
值 = (−1)^符号 × 1.尾数₂ × 2^(指数 − 偏置) · 非规格化数:(−1)^符号 × 0.尾数₂ × 2^(1 − 偏置)
偏置为 15(半精度)、127(单精度)、1023(双精度)。指数字段全为 0 表示零或非规格化数;全为 1 表示无穷大(尾数为 0)或 NaN。转换使用精确的整数运算,并按就近舍入、平局取偶,因此结果与正确舍入的编译器或解析器一致;可往返的最短十进制数,就是能转换回同样位的最短数字。
示例
单精度下的 0.1 变成 0x3DCCCCCD = 0 01111011 10011001100110011001101:符号 0,指数 123 − 127 = −4,有效数 1.60000002384185791015625。存储的值恰好是 0.100000001490116119384765625,因此舍入误差为 +0.000000001490116119384765625。在双精度下,0.1 变成 0x3FB999999999999A,约为 0.1000000000000000055511。
常见问题
为什么 0.1 + 0.2 不等于 0.3?
这三个数都无法用二进制精确表示。每个数都被舍入到最近的 double,舍入误差并不会抵消,所以和是 0.30000000000000004,而不是最接近 0.3 的 double。
什么是非规格化数?
比最小规格化数还小的值。指数字段为零,也没有隐含的前导 1,这让数值能逐渐趋近于零,代价是精度下降。
为什么 65520 在半精度中会变成无穷大?
半精度的最大值是 65504。65520 恰好位于 65504 和下一档 65536 的正中间,而 65536 超出了该格式的范围,就近舍入到偶数后就变成了无穷大。
静默 NaN 和信号型 NaN 有什么区别?
二者都表示“不是数字”。尾数最高位为 1 的是静默 NaN,它会悄悄地通过各种运算;为 0 的是信号型 NaN,使用时本意是引发异常。
资料来源
最后更新:
包含这些输入的页面地址: https://kakao.mobile/zh/tools/ieee-754-converter/
引用此工具
kakaoCalc. (2026, November 8). IEEE 754 浮点数转换器. https://kakao.mobile/zh/tools/ieee-754-converter/
“IEEE 754 浮点数转换器.” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/ieee-754-converter/.