js 为什么0.1+0.2不等于0.3呢?

210 阅读1分钟

0.1+0.2不等于0.3的原因:

在使用浮点数进行计算逻辑处理时,不注意,就可能出现问题

注意,永远不要直接做比较和运算俩个浮点的大小

这个属于数字运算中的精度缺失的问题

在0.1 + 0.2这个式子中,会先转换为二进制,0.1与0.2转换为二进制的时候尾数会发生无限循环,然后进行对阶运算,js引擎对二进制进行截断,所以造成精度丢失,0.1和0.2都是近似表示的,在他们相加的时候,两个近似值进行了计算,导致最后得到的值是0.30000000000000004,;

此时对于JS来说,其不够近似于0.3,于是就出现了0.1 + 0.2 != 0.3 这个现象。 当然,也并非所有的近似值相加都得不到正确的结果。

解决方案:

规避掉这类小数计算时的精度问题,将浮点数(float)转换为整数(int)类型进行计算,整数都是可以精确的计算出结果或者 toFixed 方法可以指定运算结果的小数点后的指定位数,toFixed(1)里面toFixed的参数就时保留的位数。