0.1+0.2!=0.3

JS采用的是IEEE 754双精度版本,采用IEEE 754双精度的语言都会有这个问题。

计算机是通过二进制来存储东西的,0.1在二进制中是无限循环的一些数字,其实很多的十进制小数用二进制表示都是无限循环的。这样其实没问题。但是JS采用的浮点标准会裁剪掉我们的数组。

因为JS浮点标准的裁剪,就造成了精度丢失。

console.log(0.100000000000000002);//0.1

0.1变成了0.100000000000000002
0.2变成了0.200000000000000002
所以0.1+0.2=0.300000000000000004