1、/****加法函数,用来得到精确的加法结果**说明:javascript的加法结果会有误差,在两稍僚敉视个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。**调用:accAdd(锾攒揉敫arg1,arg2)**返回值:arg1加上arg2的精确结果**/functionaccAdd(arg1,arg2){varr1,r2,m,c;try{r1=arg1.toString().split(".")[1].length;}catch(e){r1=0;}try{r2=arg2.toString().split(".")[1].length;}catch(e){r2=0;}c=Math.abs(r1-r2);m=Math.pow(10,Math.max(r1,r2));if(c>0){varcm=Math.pow(10,c);if(r1>r2){arg1=Number(arg1.toString().replace(".",""));arg2=Number(arg2.toString().replace(".",""))*cm;}else{arg1=Number(arg1.toString().replace(".",""))*cm;arg2=Number(arg2.toString().replace(".",""));}}else{arg1=Number(arg1.toString().replace(".",""));arg2=Number(arg2.toString().replace(".",""));}return(arg1+arg2)/m;}
2、/****减法函数,用来得到精确的减法结果**说明:javascript的减法结果会有误差,在两个浮点数相减的时候会比较明显。这个函数返回较为精确的减法结果。**调用:accSub(arg1,arg2)**返回值:arg1加上arg2的精确结果**/functionaccSub(arg1,arg2){varr1,r2,m,n;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));//lastmodifybydeeka//动态控制精度长度n=(r1>=r2)?r1:r2;return((arg1*m-arg2*m)/m).toFixed(n);}
3、/****乘法函数,用来得到精确的乘法结果**说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。**调用:accMul(arg1,arg2)**返回值:arg1乘以arg2的精确结果**/functionaccMul(arg1,arg2){varm=0,s1=arg1.toString(),s2=arg2.toString();try{m+=s1.split(".")[1].length;}catch(e){}try{m+=s2.split(".")[1].length;}catch(e){}returnNumber(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);}
4、/****除法函数,用来得到精确的除法结果**说明:javascript的除法结果会有误差,在两稍僚敉视个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。**调用:accDiv(锾攒揉敫arg1,arg2)**返回值:arg1除以arg2的精确结果**/functionaccDiv(arg1,arg2){vart1=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);}}