IEEE 754 浮点数转换器
在你的浏览器中,将十进制数与 32 位和 64 位 IEEE 754 相互转换——包含符号位、指数位和尾数位、十六进制、精确存储值以及舍入误差。
IEEE 754 转换器完全在你的浏览器中运行,使用标准的数字 API。你转换的十进制数、十六进制和位模式都留在你的设备上,绝不会上传到 ArrayKit。
打开进制转换器
关于 IEEE 754 转换器
IEEE 754 转换器会把一个十进制数转换成它精确的 32 位(单精度)和 64 位(双精度)浮点表示。它将符号位、带偏置的指数以及尾数分别显示为彩色标注的位字段,另外还有十六进制字、这些位实际存储的精确值,以及你输入的值与机器保留的值之间的舍入误差。由于二进制无法表示大多数十进制小数,像 0.1 这样的值会有微小的偏移——本工具让这种偏移清晰可见。反方向也能用:粘贴一个十六进制模式或原始位串,还原出它所解码的十进制数。它专为调试浮点精度、对比 float32 与 float64,或检查 Infinity、NaN 和非规格化数的开发者而打造。每次转换都在你的浏览器本地运行;你输入的数字绝不会离开你的设备。
功能特性
- 将任意十进制数转换为 32 位(单精度)和 64 位(双精度)IEEE 754
- 彩色标注的符号位、指数位和尾数位字段
- 在完整二进制位串旁显示十六进制字
- 报告精确存储值以及相对你输入的舍入误差
- 反向模式可将十六进制模式或位串解码还原为十进制数
- 处理 Infinity、NaN、负零和次正规(非规格化)数
- 显示带偏置和不带偏置的指数,让你能读出其数量级
- 完全在你的浏览器中运行——数字绝不会离开你的设备
如何使用 IEEE 754 转换器
- 保持选中「十进制 → IEEE 754」,并输入一个数字,例如 0.1
- 选择 32 位或 64 位,以查看单精度或双精度的位
- 查看符号位、指数位和尾数字段、十六进制以及舍入误差
- 切换到「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 的值。
常见错误与故障排除
- 两个本应相等的数字在代码中却比较为不相等。 — 每次运算的舍入各不相同,因此请用一个很小的容差(epsilon)而非 == 来比较浮点数,或改用 64 位以获得更高精度。
- 粘贴的十六进制值意外地解码为 Infinity 或 NaN。 — 全为 1 的指数字段表示 Infinity(尾数为零)或 NaN(尾数非零)。也请检查位宽——32 位为 8 个十六进制数字,64 位为 16 个。
- 在你的程序中 0.1 + 0.2 不等于 0.3。 — 每个值都会先被舍入到最接近的二进制浮点数,因此求和结果会有差异。在这里转换 0.1、0.2 和 0.3,即可看到导致这一不一致的精确存储值。
- 一个非常小的数被标记为「次正规」。 — 在最小的正规指数以下,浮点数会舍弃隐含的前导 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,以更低的精度表示比最小正规浮点数还小的值。工具会自动将其标记出来。
相关工具
- 进制转换工具 — 在二进制、八进制、十进制和十六进制之间转换整数。
- 位运算计算器 — 对整数执行 AND、OR、XOR、NOT 和位移,多进制查看结果。
- 文本转二进制转换器 — 在浏览器中把文本转成二进制、HEX 或十进制字节并解码回来。
- 哈希生成器 — 通过 Web Crypto API 生成 SHA-256 / SHA-1 / SHA-384 / SHA-512。
- 罗马数字转换器 — 数字与罗马数字双向转换,支持上划线记法。
- Base32 编码器 / 解码器 — 在浏览器中把文本编码为 RFC 4648 Base32 并解码回来。
全部 ArrayKit 工具