代码描述:js算数精度。js算数精度问题解决方案源码实例
在进行算数运算的时候,可能会出现精度问题,当然这个问题在各个语言中都有,但是多数语言都进行了封装,也可以说那些语言不存在这个问题,但是javascript在这个方面就没有如此体贴,所以需要程序员自行处理,下面就是能够实现此功能的相应的代码。 一.算数加运算:
<script> function numAdd(num1,num2){ var baseNum,baseNum1,baseNum2; try{baseNum1=num1.toString().split(".")[1].length;} catch(e){baseNum1 = 0;} try{baseNum2 = num2.toString().split(".")[1].length;} catch(e){baseNum2 = 0;} baseNum = Math.pow(10, Math.max(baseNum1, baseNum2)); return (num1 * baseNum + num2 * baseNum) / baseNum; }; </script>
以上代码可以消除加运算的精度问题。 二.算数减运算:
<script> function numSub(num1,num2){ var baseNum,baseNum1,baseNum2; var precision; try{baseNum1=num1.toString().split(".")[1].length;} catch(e){baseNum1=0;} try{baseNum2=num2.toString().split(".")[1].length;} catch(e){baseNum2=0;} baseNum=Math.pow(10, Math.max(baseNum1, baseNum2)); precision=(baseNum1 >= baseNum2) ? baseNum1 : baseNum2; return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision); }; </script>
以上代码可以消除减运算的精度问题。 三.算数乘运算:
<script> function numMulti(num1,num2){ var baseNum=0; try{baseNum+= num1.toString().split(".")[1].length;} catch(e){} try{baseNum += num2.toString().split(".")[1].length;} catch(e){} return Number(num1.toString().replace(".",""))*Number(num2.toString().replace(".",""))/Math.pow(10,baseNum); }; </script>
以上代码可以消除乘法运算的精度问题。 四.算数除法运算:
<script> function numDiv(num1,num2){ var baseNum=0,baseNum2=0; var baseNum3,baseNum4; try{baseNum1=num1.toString().split(".")[1].length;} catch(e){baseNum1=0;} try{baseNum2=num2.toString().split(".")[1].length;} catch(e){baseNum2=0;} with(Math){ baseNum3=Number(num1.toString().replace(".", "")); baseNum4=Number(num2.toString().replace(".", "")); return (baseNum3 / baseNum4) * pow(10, baseNum2 - baseNum1); } }; </script>
请绑定手机号,在继续操作
注意:只有绑定手机以后,才可使用网站全部功能