解决JS中0.1+0.2不等于0.3

263 阅读1分钟

在js中 0.1+0.2!=0.3。

aasd.png

原因: 在计算机中数字无论是定点数还是浮点数都是以多位二进制的方式进行存储的。浮点数相加是有精度误差的。所以一般计算中尽量减少浮点数之间的运算。

解决办法:

  • 想办法直接规避小数的精度问题,可以先将浮点数都转化为整数计算,这样整数都可以精确的表示。

    0.1+0.2=>(0.1*10+0.2*10)/10
    

控制台效果图:

qwe.png

  • js的Number对象有一个保留小数位数的方法:toFixed(); 传入一个需要保留的位数就OK:

    (0.1+0.2).toFixed(10)==0.3
    

控制台效果图:

ssa.png