萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> js浮點數精確計算

js浮點數精確計算

 本篇文章主要介紹了js浮點數精確計算(加、減、乘、除) 需要的朋友可以過來參考下,希望對大家有所幫助

代碼如下: <SPAN style="FONT-SIZE: 18px">//說明:javascript的加法結果會有誤差,在兩個浮點數相加的時候會比較明顯。這個函數返回較為精確的加法結果。    //調用:accAdd(arg1,arg2)    //返回值:arg1加上arg2的精確結果    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   }</SPAN>     代碼如下: <SPAN style="FONT-SIZE: 18px">     //說明:javascript的減法結果會有誤差,在兩個浮點數相加的時候會比較明顯。這個函數返回較為精確的減法結果。    //調用:accSub(arg1,arg2)    //返回值:arg1減上arg2的精確結果    function accSub(arg1,arg2){           return accAdd(arg1,-arg2);   }</SPAN>    代碼如下: <SPAN style="FONT-SIZE: 18px">     //說明:javascript的乘法結果會有誤差,在兩個浮點數相乘的時候會比較明顯。這個函數返回較為精確的乘法結果。    //調用:accMul(arg1,arg2)    //返回值:arg1乘以arg2的精確結果    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)   }</SPAN>   代碼如下: <SPAN style="FONT-SIZE: 18px">     //說明:javascript的除法結果會有誤差,在兩個浮點數相除的時候會比較明顯。這個函數返回較為精確的除法結果。    //調用:accDiv(arg1,arg2)    //返回值:arg1除以arg2的精確結果    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);       }   }</SPAN>  
copyright © 萬盛學電腦網 all rights reserved