Skip to content

IEEE 754 标准

IEEE 754 是一种二进制浮点数算术标准,定义了浮点数的存储格式、运算规则和舍入方式等内容。该标准由 IEEE(国际电气和电子工程师协会)于 1985 年发布,之后进行了多次修订,目前最新的版本是 IEEE 754-2019。

格式

在 IEEE 754 中,所有的浮点数都采用二进制科学计数法表示,分为单精度浮点数和双精度浮点数两种类型。其中单精度浮点数占 32 位,双精度浮点数占 64 位,它们的格式如下:

单精度浮点数:1位符号位 + 8位指数位 + 23位尾数位
双精度浮点数:1位符号位 + 11位指数位 + 52位尾数位

精度问题

然而由于二进制无法精确表示某些十进制小数,因此在进行某些浮点数运算时可能会出现精度误差。

例如,0.1 在二进制下是一个无限循环的小数:

0.0001100110011001100110011001100110011001100110011...

因此在将其转换为浮点数时会存在精度误差。这也是 JavaScript 等编程语言中经常出现浮点数精度问题的主要原因。

IEEE 754 标准不仅仅适用于 JavaScript 语言,其他采用该标准的编程语言(如 Java、Python 等)同样也存在浮点数精度问题。

解决方案

  • 缩放为整数;

    js
    let sum = (0.1 * 10 + 0.2 * 10) / 10
    console.log(sum) // 输出 0.3