IEEE 754 浮点数转换器

在你的浏览器中,将十进制数与 32 位和 64 位 IEEE 754 相互转换——包含符号位、指数位和尾数位、十六进制、精确存储值以及舍入误差。

IEEE 754 转换器完全在你的浏览器中运行,使用标准的数字 API。你转换的十进制数、十六进制和位模式都留在你的设备上,绝不会上传到 ArrayKit。

打开进制转换器

关于 IEEE 754 转换器

IEEE 754 转换器会把一个十进制数转换成它精确的 32 位(单精度)和 64 位(双精度)浮点表示。它将符号位、带偏置的指数以及尾数分别显示为彩色标注的位字段,另外还有十六进制字、这些位实际存储的精确值,以及你输入的值与机器保留的值之间的舍入误差。由于二进制无法表示大多数十进制小数,像 0.1 这样的值会有微小的偏移——本工具让这种偏移清晰可见。反方向也能用:粘贴一个十六进制模式或原始位串,还原出它所解码的十进制数。它专为调试浮点精度、对比 float32 与 float64,或检查 Infinity、NaN 和非规格化数的开发者而打造。每次转换都在你的浏览器本地运行;你输入的数字绝不会离开你的设备。

功能特性

如何使用 IEEE 754 转换器

  1. 保持选中「十进制 → IEEE 754」,并输入一个数字,例如 0.1
  2. 选择 32 位或 64 位,以查看单精度或双精度的位
  3. 查看符号位、指数位和尾数字段、十六进制以及舍入误差
  4. 切换到「IEEE 754 → 十进制」,并粘贴十六进制或二进制模式将其解码还原

示例

输入

0.1  (as float32)

输出

hex:            0x3dcccccd
stored value:   0.10000000149011612
exact value:    0.100000001490116119384765625
rounding error: 1.4901161193847656e-9

0.1 没有精确的二进制形式,因此 float32 存储的是一个略大于 0.1 的值。

常见错误与故障排除

常见问题

为什么 0.1 在 IEEE 754 中无法被精确存储?
0.1 在二进制中是循环小数,正如 1/3 在十进制中一样,因此它无法用有限位数写出。转换器会把它舍入到最接近的可表示值,并显示剩余的舍入误差。
32 位和 64 位浮点数有什么区别?
32 位(单精度 / float)使用 8 位指数和 23 位尾数,约有 7 位十进制精度。64 位(双精度)使用 11 位和 52 位,约有 15–16 位。切换精度即可在两者中对比同一个数字。
我该如何读取符号、指数和尾数字段?
第一位是符号位(0 为正,1 为负)。接下来的 8 位或 11 位是指数,以 127 或 1023 的偏置存储。其余的 23 位或 52 位是尾数——对于正规数,它是隐含前导 1 之后的小数部分。
Infinity、NaN 和负零是如何编码的?
全为 1 的指数配合零尾数表示 ±Infinity;配合非零尾数则表示 NaN。负零是除符号位外全为零。工具会在你输入时为这些特殊情况逐一标注。
我可以把一个十六进制浮点值转换回十进制吗?
可以。切换到「IEEE 754 → 十进制」,选择十六进制或二进制,并粘贴该模式。工具会重建符号、指数和尾数,并显示这些位所表示的精确十进制数。
什么是次正规(非规格化)数?
当指数字段全为零而尾数非零时,该数就是次正规数:它舍弃隐含的前导 1,以更低的精度表示比最小正规浮点数还小的值。工具会自动将其标记出来。

相关工具

全部 ArrayKit 工具