js javascript 四舍五入结果不正确 不对

2025-06-29 01:09:29
推荐回答(2个)
回答1:

我测试了你的表达式,结果是3488.4849999999997。四舍五入为3488.48。

javascript做浮点数运算时,由于浮点数精度的问题,会造成运算结果不准确。

解决办法是:将小数运算转化为整数运算,这样就不会丢失精度。

function multiply(arg1, arg2) 

    var m=0, s1=arg1.toString(), s2=arg2.toString(); 
    try{
        m+=s1.split(".")[1].length
    } catch(e){} 
    try{
        m+=s2.split(".")[1].length
    } catch(e){}  
    return Number(s1.replace(".","")) * Number(s2.replace(".","")) / Math.pow(10,m) 
}
multiply(500.50,6.97);
/*
3488.485
*/

 既想保证精度,又想简单,那没有这样的方法。其实这个方法本身并不复杂。


求网友推荐~

回答2:

请注意,在js中由于小数精度原因,500.50*6.97 = 3488.4849999999996,因此你toFixed(2)为3488.48,通常可以这样处理:

var n = (500.50*100)*(6.97*100);
var num = new Number(n/10000).toFixed(2);  //结果:3488.49