浮点数的运算精度丢失问题。
可以引入ES6中的机器精度Number.EPSILON判定是计算误差还是数据不同。
Number.EPSILON为JavaScript可以表示的最小精度2^(-52)。
实际原理
将0.1和0.2转换为二进制
0.1 => 0.0001 1001 1001 1001...无限循环
0.2 => 0.0011 0011 0011 0011...无限循环
0.1+0.2 => 0.0100 1100 1100 1100...无限循环
因为双精度浮点数的小数部分最多为52位,所以截断后0.1+0.2为
0.1+0.2 => 0.0100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100
=> 0.30000000000000004