You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IEEE 754与传统浮点数中0.1+0.2-0.3的结果差异问询

Knuth传统浮点数下0.1+0.2-0.3的计算结果

答案是:会严格得到0。

具体原因:

  • 先说说IEEE 754的问题:0.1、0.2这类十进制有限小数,没法用二进制浮点数精确存储,只能存近似值。相加后的结果和0.3的二进制近似值有微小偏差,所以0.1+0.2-0.3会得到一个极小的非零值。
  • 而Knuth在《计算机程序设计艺术》里定义的传统浮点数,是十进制浮点模型:尾数(significand)存储精确的十进制数字,指数对应10的幂次。在这个模型里:
    • 0.1精确表示为1 × 10^-1
    • 0.2精确表示为2 × 10^-1
    • 两者相加得到3 × 10^-1(也就是精确的0.3)
    • 再减去精确的0.3,结果必然是严格的0,不存在任何误差。

这种十进制浮点模型天生适配十进制有限小数的运算,只要运算过程中尾数的存储位数足够容纳结果的有效数字,就能得到精确结果。

内容的提问来源于stack exchange,提问作者nonopolarity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 11:09:25