1. 程式人生 > >js中float型別加減乘除運算精度問題

js中float型別加減乘除運算精度問題

js裡邊取float數的精度的方法 toFixed()

toFixed() 方法可把 Number 四捨五入為指定小數位數的數字。

toFixed() 裡面的數為 0- 20 之間的整數。

var a = 1.23456

a.toFixed(2) = 1.23

toFixed 方法有bug,不同的瀏覽器對它的解析不一樣。比如,0.009.toFixed(2)在firefox下 為0.01 而在IE7下為

 0.00。

解決辦法:

重寫

Number.prototype.toFixed  = function ( exponent)
{
return  parseInt( this *  Math.pow( 

10 , exponent)  + 0.5 )/Math.pow(10,exponent);
}



遇到要在頁面上計算報銷金額-借款金額=應付金額。這三個金額都是Float型。
但發現js計算float的加減會出現精度不準確問題。

解決方案:
第一種是按小數點分隔,分別計算小數點前面那部分的值和小數點後面那部分的值。
此方法有點繁瑣。
第二種方法是該float乘以10的n次方(n為小數位數),即把該float放大為整型再進行加或減運算,然後再將得到結果除以10的n次方,toFied(n)取得需要的小數位數。