Javascript 的浮点数运算

Javascript 采用的是 IEEE-754 浮点数表示法,这是一种二进制浮点数表示法,可以精确的(注意是精确,不是准确)表示分数,例如:1/2、1/4、1/8 、1/1024 等。但如果想表示 1/10、1/100 这样的十进制分数,就会有精度问题了。

在 Node.js 的 REPL 中运行:

> 0.3-0.2
0.09999999999999998
> 0.4-0.3
0.10000000000000003
> 0.2-0.1
0.1
> 0.3-0.2 == 0.2-0.1
false
>

所以,当我们需要很精确的结果的时候,最好是把浮点数运算转成大整数运算,例如:0.3 - 0.2 转成 (3-2)/10