js round四舍五入不正确问题
发布网友
发布时间:2022-04-28 23:14
我来回答
共2个回答
热心网友
时间:2022-04-23 10:56
这是JavaScript浮点运算的一个bug
var pre = 3472.45 * 0.3;
alert("pre=" + pre); //1041.73
alert(pre + " * 100 = " + pre * 100); //104173.49999999999
alert("四舍五入后:" + Math.round(pre*100)/100); //1041.73
解决办法
/* 精确乘法 */
function accMul(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)
}
var pre = 3472.45 * 0.3; //1041.735
alert("四舍五入后:" + Math.round(accMul(pre, 100))/100); //1041.74
热心网友
时间:2022-04-23 12:14
用这个方法 toFixed(n) 。n表示保留几位小数