之前就有看过JavaScript浮点数bug的相关文章,但没有特别关注,直到最近做一个项目,正好是涉及到浮点运算,看了好几次确认逻辑没有问题以后断点跟踪发现了传说中的浮点数bbug。
$ node
> 0.8 - 0.1
0.7000000000000001
这跟运行环境还没有关系,比如Chrome console下
> 0.8 - 0.1
0.7000000000000001
但不是每个浮点书运算都会有这个bug,比如:
$ node
> 0.8 - 0.1
0.7000000000000001
> 0.9 - 0.8
0.09999999999999998
> 1.0 - 0.1
0.9
> 1.0 - 0.4
0.6
> 0.4 - 0.3
0.10000000000000003
> 0.1 + 0.1
0.2
> 0.5 + 0.1
0.6
>
...