AZ Tools

IEEE 754 浮点转换器 (32 与 64 位)

转换

浮点数以符号位、带偏移的指数和尾数(fraction)存储,你键入的值与实际存储值之间的差异正是无数舍入错误的根源。本转换器以 float32(单精度,1+8+23 位,偏移 127)与 float64(双精度,1+11+52 位,偏移 1023)两者展示任意十进制数的精确 IEEE 754 表示:彩色位串、hex 字、去偏移指数与尾数、值类别(正规、非正规、零、无穷、NaN),以及舍入后实际存储的值。也可反向运行 — 粘贴 8 位或 16 位 hex 字,即可得到解码后的数字及其完整分解。适合调试序列化、着色器与嵌入式代码、GPU 缓冲区,以及「为何 0.1 + 0.2 != 0.3」之类的问题。可接受特殊输入 Infinity、-Infinity 与 NaN。全部在本地运行;不上传任何内容。

float32 (single)正规
00111101110011001100110011001101
0x3dcccccd
符号
0 (+)
指数
123 (2^-4)
有效数字
1.10011001100110011001101
存储值
0.10000000149011612

已舍入 — float32 无法精确存储此值。

float64 (double)正规
0011111110111001100110011001100110011001100110011001100110011010
0x3fb999999999999a
符号
0 (+)
指数
1019 (2^-4)
有效数字
1.1001100110011001100110011001100110011001100110011010
存储值
0.1
符号 指数 尾数

float32 = 1 符号 + 8 指数 + 23 尾数位;float64 = 1 + 11 + 52。指数偏移为 127 / 1023。

使用方法

  1. 保持「十进制 → 位」并键入数字(如 0.1、-3.14、1e10、Infinity、NaN)以查看 float32 与 float64。
  2. 阅读符号 / 指数 / 尾数的拆分、hex 字与存储值;当 float32 需要舍入时会有提示。
  3. 切换到「位 → 十进制」,选择精度,粘贴 hex 字将其解码回数字。

常见问题

为何存储值与我键入的不同?
多数十进制小数无法在二进制浮点中精确表示。工具显示最接近的可表示值 — 例如 float32 的 0.1 实际上是 0.100000001490116119384765625。当存储的 float32 值与你的输入不同时会出现舍入提示;float64 存储的就是 JavaScript 已在使用的值。
彩色位是什么意思?
红色是符号位(0 正、1 负),蓝色是指数(带偏移:float32 减 127、float64 减 1023 得到 2 的幂),绿色是尾数(fraction)。正规数的有效数字为 1.尾数;非正规数为 0.尾数,使用最小指数。
无穷、NaN 与零如何显示?
指数全为 1 且尾数为 0 是 ±无穷;指数全为 1 且尾数非零是 NaN;指数与尾数全为 0 是 ±零(注意 -0 有不同的符号位);指数全为 0 且尾数非零是非正规数。每张卡片都标注类别。
解码期望哪种 hex 格式?
原始位的大端 hex:float32 为 8 位十六进制(如 3f800000 = 1.0),float64 为 16 位(如 3ff0000000000000 = 1.0)。开头的 0x 与空格会被忽略,较短的输入会在左侧补零。

相关工具