ZH
我的工具

IEEE 754 浮点数转换器

把十进制数转换为 IEEE 754 半精度、单精度和双精度并可反向转换:十六进制与二进制位、指数、尾数、精确存储值和舍入误差。

十进制数(1.5e-3)、分数(1/3)、inf 或 nan,或 C 的十六进制浮点数(0x1.8p3)。在位模式下则是十六进制或二进制位模式。
十六进制
0x3DCCCCCD
binary32
二进制(符号 指数 尾数)
0 01111011 10011001100110011001101
存储的值(精确值)
0.100000001490116119384765625
可往返的最短十进制数
0.1
能转换回这些位的最短数字
类型
规格化数
符号位
0
正
指数字段
01111011 = 123
偏置 127
实际指数
-4
123 − 127
尾数字段
10011001100110011001101 (0x4CCCCD)
有效数(significand)
1.60000002384185791015625
1.(尾数的十进制形式);值 = ± 有效数 × 2^-4
到下一个值的间隔(ULP)
7.45058e-9
2^-27
舍入误差
0.000000001490116119384765625
存储值 − 输入值
相对误差
1.490e-8
同一个数字在各格式中的表示
格式十六进制存储的值(最短)舍入误差
binary160x2E660.1-2.441e-5
binary32(已选)0x3DCCCCCD0.11.490e-9
binary640x3FB999999999999A0.15.551e-18
格式布局
格式符号指数位尾数位偏置最大有限值最小规格化数最小非规格化数
binary16(半精度)151015655046.10352e-55.96046e-8
binary32(单精度)18231273.40282e+381.17549e-381.40130e-45
binary64(双精度)1115210231.79769e+3082.22507e-3084.94066e-324
我的工具 →
广告

计算机用 IEEE 754 二进制浮点数存储大多数非整数,而 0.1 或 1/3 无法被精确表示。本转换器展示一个数在半精度(16 位)、单精度(32 位 float)和双精度(64 位 double)下变成的精确位,把它们拆分为符号、指数和尾数,并输出真正存储的精确十进制值及舍入误差。它也能把十六进制或二进制位模式解码回数字,包括零、非规格化数、无穷大和 NaN。

使用方法

  1. 输入一个数(0.1 这样的十进制数、1/3 这样的分数、C 的十六进制浮点数、inf 或 nan),或粘贴一个位模式。
  2. 选择该值是数字,还是十六进制/二进制位。
  3. 选择半精度、单精度或双精度。
  4. 查看十六进制和二进制编码、字段拆分、精确存储值和误差;表格会比较三种格式。

计算公式

值 = (−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,使用时本意是引发异常。

资料来源

最后更新:

引用此工具
APA

kakaoCalc. (2026, November 8). IEEE 754 浮点数转换器. https://kakao.mobile/zh/tools/ieee-754-converter/

MLA

“IEEE 754 浮点数转换器.” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/ieee-754-converter/.

广告