js浮点数精度问题

xiaoxiao2021-02-28  112

大多数语言在处理浮点数的时候都会遇到精度问题,但是在js里似乎特别严重,来看一个例子

alert(45.6*13);

结果居然是592.800000000001,当然加法之类的也会有这个问题

那这是js的错误吗?

当然不是,你的电脑做着正确的二进制浮点运算,但问题是你输入的是十进制的数,电脑以二进制运算,这两者并不是总是转化那么好的,有时候会得到正确的结果,但有时候就不那么幸运了

alert(0.7+0.1);//输出0.7999999999999999

alert(0.6+0.2);//输出0.8

用下面的方法保留两位小数  

    //功能:将浮点数四舍五入,取小数点后2位      function toDecimal(x) {        var f = parseFloat(x);        if (isNaN(f)) {          return;        }        f = Math.round(x*100)/100;        return f;      }

转载请注明原文地址: https://www.6miu.com/read-53692.html

最新回复(0)