js数字计算 误差问题的快速解决方法
实例如下:
//加法函数,用来得到精确的加法结果
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
functionadd(a,b){
varc,d,e;
try{
c=a.toString().split(".")[1].length;
}catch(f){
c=0;
}
try{
d=b.toString().split(".")[1].length;
}catch(f){
d=0;
}
returne=Math.pow(10,Math.max(c,d)),(mul(a,e)+mul(b,e))/e;
}
//乘法函数,用来得到精确的乘法结果
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
//调用:accMul(arg1,arg2)
//返回值:arg1乘以arg2的精确结果
functionmul(a,b){
varc=0,
d=a.toString(),
e=b.toString();
try{
c+=d.split(".")[1].length;
}catch(f){}
try{
c+=e.split(".")[1].length;
}catch(f){}
returnNumber(d.replace(".",""))*Number(e.replace(".",""))/Math.pow(10,c);
}
//减法函数,用来得到精确的减法结果
//说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。
//调用:accSubtr(arg1,arg2)
//返回值:arg1减去arg2的精确结果
functionsub(a,b){
varc,d,e;
try{
c=a.toString().split(".")[1].length;
}catch(f){
c=0;
}
try{
d=b.toString().split(".")[1].length;
}catch(f){
d=0;
}
returne=Math.pow(10,Math.max(c,d)),(mul(a,e)-mul(b,e))/e;
}
//除法函数,用来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
//调用:accDiv(arg1,arg2)
//返回值:arg1除以arg2的精确结果
functiondiv(a,b){
varc,d,e=0,
f=0;
try{
e=a.toString().split(".")[1].length;
}catch(g){}
try{
f=b.toString().split(".")[1].length;
}catch(g){}
returnc=Number(a.toString().replace(".","")),d=Number(b.toString().replace(".","")),mul(c/d,Math.pow(10,f-e));
}
以上这篇js数字计算误差问题的快速解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。