每次使用js做加减乘除计算的时候都会莫名其妙的出现一些浮点数,这是因为js在计算的时候会进行二进制与十进制之间的转换,转换过程会出现误差情况,最经典的例子就是:
0.1+0.2=0.30000000000000004
未解决这个问题我在网上搜索了很多结果,下面把没问题的解决方法分享给大家:
这是对除法计算的处理
function accDiv(arg1,arg2){//两个参数相除,函数直接调用即可
var t1=0,t2=0,r1,r2;
try{
t1=arg1.toString().split(".")[1].length;
}catch(e){}
try{
t2=arg2.toString().split(".")[1].length;
}catch(e){}
with(Math){
r1=Number(arg1.toString().replace(".",""));
r2=Number(arg2.toString().replace(".",""));
return (r1/r2)*pow(10,t2-t1);
}
}
这是对乘法计算的处理
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
)}
这是对加法计算的处理
function accAdd(arg1,arg2){ //两个参数相加,函数直接调用即可
var r1,r2,m;
try{
r1 = arg1.toString().split(".")[1].length;
}catch(e){r1=0}
try{
r2 = arg2.toString().split(".")[1].length;
}catch(e){r2=0}
m = Math.pow(10,Math.max(r1,r2));
return (arg1*m+arg2*m)/m;
}
不知道怎么使用的小伙伴可以留言讨论哦!或者这个函数有计算问题的也可以留言,我会及时更正的,对前端感兴趣的小伙伴,可以加群一起讨论哦!q群:682783851
一起加油,一起进步