出现原因
在JS中数字采用的IEEE 754
的双精度标准进行存储,不管是小数还是整数
存的都是64位
64位又包括3个部分:符号位,指数位,有效位
0.1+0.2 等于0.3:0.3是怎么存的呢,首先0.3会转成二进制,二进制再转成科学记数法,(转换过程中会出现一个循环0011会不断循环)
符号位:正数存的是0,负数存的是1
指数位: 11位—》10的负二次方
有效位:52位
参考文档
只有0.1+0.2会出现这个问题,其他不会
解决方法
最好的方法就是我们想办法规避掉这类小数计算时的精度问题
就好了,那么最常用的方法就是将浮点数转化成整数
计算。因为整数都是可以精确表示
的
toFixed