js浮點數據類型的計算

來源:互聯網
上載者:User

JS浮點數據類型的計算,如下執行個體:

 
  1. //說明:javascript的乘法結果會有誤差,在兩個浮點數相乘的時候會比較明顯。這個函數返回較為精確的乘法結果。   
  2. //調用:accMul(arg1,arg2)   
  3. //傳回值:arg1乘以arg2的精確結果   
  4. function accMul(arg1,arg2)   
  5. {   
  6.     var m=0,s1=arg1.toString(),s2=arg2.toString();   
  7.     try{m+=s1.split(".")[1].length}catch(e){}   
  8.     try{m+=s2.split(".")[1].length}catch(e){}   
  9.     return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)   
  10. }   
  11.    
  12. //給Number類型增加一個mul方法,調用起來更加方便。   
  13. Number.prototype.mul = function (arg){   
  14.     return accMul(arg, this);   
  15. }   
  16.    
  17. //說明:javascript的除法結果會有誤差,在兩個浮點數相除的時候會比較明顯。這個函數返回較為精確的除法結果。   
  18. //調用:accDiv(arg1,arg2)   
  19. //傳回值:arg1除以arg2的精確結果   
  20. function accDiv(arg1,arg2){   
  21.     var t1=0,t2=0,r1,r2;   
  22.     try{t1=arg1.toString().split(".")[1].length}catch(e){}   
  23.     try{t2=arg2.toString().split(".")[1].length}catch(e){}   
  24.     with(Math){   
  25.         r1=Number(arg1.toString().replace(".",""))   
  26.         r2=Number(arg2.toString().replace(".",""))   
  27.         return (r1/r2)*pow(10,t2-t1);   
  28.     }   
  29. }   
  30.    
  31. //給Number類型增加一個div方法,調用起來更加方便。   
  32. Number.prototype.div = function (arg){   
  33.     return accDiv(this, arg);   
  34. }   
  35.    
  36. //說明:javascript的加法結果會有誤差,在兩個浮點數相加的時候會比較明顯。這個函數返回較為精確的加法結果。   
  37. //調用:accAdd(arg1,arg2)   
  38. //傳回值:arg1加上arg2的精確結果   
  39. function accAdd(arg1,arg2){   
  40.     var r1,r2,m;   
  41.     try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}   
  42.     try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}   
  43.     m=Math.pow(10,Math.max(r1,r2))   
  44.     return (accMul(arg1,m)+accMul(arg2,m))/m   
  45. }   
  46.    
  47. //給Number類型增加一個add方法,調用起來更加方便。   
  48. Number.prototype.add = function (arg){   
  49.     return accAdd(arg,this);   
  50. }   
  51.    
  52. //說明:javascript的減法結果會有誤差,在兩個浮點數相加的時候會比較明顯。這個函數返回較為精確的減法結果。   
  53. //調用:accSub(arg1,arg2)   
  54. //傳回值:arg1減上arg2的精確結果   
  55. function accSub(arg1,arg2){       
  56.     return accAdd(arg1,-arg2);   
  57. }   
  58.    
  59. //給Number類型增加一個sub方法,調用起來更加方便。   
  60. Number.prototype.sub = function (arg){   
  61.     return accSub(this,arg);   
  62. }   


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。