IEEE 754 浮点解析器

输入任意十进制小数,按 DataView 真实写入内存拆出 符号位、指数位、尾数位,展示精确存储值与误差;支持位串/十六进制反向还原数值。点预设按钮直观看懂 0.1 + 0.2 ≠ 0.3 的原因。

十进制 → 内存位模式

位串 / 十六进制 → 数值

提示:本页位序按 bit31 → bit0(符号位在最高位)书写,与 IEEE 754 标准图示一致。

为什么 0.1 + 0.2 不等于 0.3?

十进制 0.1 转成二进制是无限循环小数(0.0001100110011…),浮点尾数只有 23/52 位,必须舍入存储。0.1 与 0.2 各自带着舍入误差相加,结果的二进制恰好更接近 0.30000000000000004 而不是 0.3 的最近存储值。用本页对比 0.1+0.2 预设与 0.3 预设的尾数位即可看出差异。

工程对策:金额用整数分或 decimal 类型;比较浮点用容差(abs(a-b) < 1e-9)而非相等判断。

float32 vs float64 对比

同一个输入分别按单精度与双精度写入内存,并列展示存储值、十六进制编码与绝对/相对误差,最后一行给出两者误差数量级差值。

精度存储值十六进制绝对误差相对误差
等待解析:输入合法十进制数后自动生成双精度对比。

相对误差随数量级变化(自绘 SVG)

以 1.23456789012345 × 10^e(e = −6 … 6)采样,对每个样本分别计算 float32 / float64 的相对舍入误差,纵轴为 log10(相对误差)。

位域布局(自绘 SVG)

按位域宽度比例绘制 float32(1 + 8 + 23)与 float64(1 + 11 + 52),当前解析精度整行高亮;右侧标注偏移量与隐含前导 1。

方案管理 · 数值对比 · 导出

调好的参数可存成方案随时载入,也能生成可分享链接;结果里的数值列会自动画成对比图,并支持导出 CSV / JSON。

最近方案 暂无

🔬口径说明与常见误填

把尾数逐位摊开,小数误差一眼看穿。

三段结构
1 位符号 + 8 位指数 + 23 位尾数是单精度 float32;双精度 float64 为 1 + 11 + 52。
指数偏移
指数按偏移存储:单精度减 127、双精度减 1023,让指数能表示正负。
隐含前导 1
尾数实际多藏一位 1:双精度 52+1 位,约对应十进制 15~17 位有效数字。
特殊值
指数全 0 表示零与次正规数,指数全 1 表示 Inf 与 NaN;本页自动识别标注。
反向还原
粘贴 32/64 位二进制串或十六进制,按 bit31 到 bit0 的位序还原数值。

这个工具解决什么问题

输入任意十进制小数,本页按 DataView 真实写入内存拆出符号位、指数位、尾数位三色位带,展示精确存储值与误差;点预设一键对比 0.1 + 0.2 不等于 0.3 的尾数差异,支持位串/十六进制反向还原数值,NaN、Inf、次正规数自动识别,纯浏览器本地运行。

三条浮点铁律

① 金额别用浮点:0.1 在二进制里是无限循环小数;算钱用整数分或 decimal 类型,本页「精确存储值」一栏就是证据。

② 比较用容差不用等号:浮点相等判断的标准写法是两数之差的绝对值小于 1e-9;直接写等号迟早出 bug。

③ 精度按有效数字选:单精度只有约 7 位十进制有效数字;科学计算基本用双精度,超过 15~17 位连双精度也保不住。

怎么用

  1. 第 1 步 · 输入小数或点预设
    预设含 0.1、0.2、0.3、0.1+0.2、-4.25、1e-7,一键载入对比。
  2. 第 2 步 · 选精度解析
    float32 单精度与 float64 双精度切换,三色位带拆分符号、指数、尾数。
  3. 第 3 步 · 看精确值与误差
    表格列出内存中实际存储的精确数值,以及与输入值的误差。
  4. 第 4 步 · 反向还原
    粘贴 32/64 位位串或 8/16 位十六进制,点「还原」得到十进制数值。

更新记录

  • v1.0 2026-11-02
  • 2026-11-02 上线首个版本
  • 2026-11-02 完善结果展示

常见问题

0.1 加 0.2 为什么不等于 0.3?
因为 0.1 和 0.2 在二进制里都是无限循环小数,IEEE 754 存储时被舍入,两者相加的舍入结果落在 0.30000000000000004 上。本页预设按钮可逐位对比三者的尾数差异。
float 在内存中怎么存储?
三段式:1 位符号 + 8 位指数(偏移 127)+ 23 位尾数为单精度;双精度是 1 + 11 + 52,偏移 1023。数值等于负一乘符号次方、乘 1.尾数、乘 2 的指数减偏移次方,本页用 DataView 写入后逐位拆给你看。
有 IEEE754 在线转换工具吗?
就是本页:十进制与 32/64 位位模式双向转换,支持十六进制输入、精确存储值与误差显示、NaN/Inf/次正规数自动识别,纯浏览器本地运行。
双精度浮点数尾数几位?
显式存储 52 位,加上隐含的前导 1 实际精度约 53 位,对应十进制约 15~17 位有效数字;单精度 23+1 位,约 7 位有效数字。超过位数的部分会被舍入。
为什么小数计算有误差?
误差来自十进制小数无法用有限二进制精确表示,以及运算结果的再次舍入。用本页查看 0.1 的「精确存储值」一栏:float64 实际存的是 0.10000000000000000555…,误差约 5.5e-17。

💬 留言板 0

全部留言需审核通过后展示
💬

还没有留言,来抢沙发吧!

✍️ 说点什么
0 / 500
图形验证码
👣 做完这一步,顺便看看
🏛️ 凯撒密码解密 凯撒密码解密 :1~25 位位移加解密、ROT13 一键转换… → 🔤 乱码转换器在线修复 乱码转换器在线 :把“锟斤拷”“�”“涓枃”“😀”等乱… → 📸 代码截图美化工具 在线代码转图片工具:粘贴或输入代码(支持 JavaScrip… → 🎨 WCAG 对比度检测工具 在线颜色对比度检测工具:输入前景文字色与背景色(支持 #he… →
全部工具 →