1. 程式人生 > >JS中浮點數總結

JS中浮點數總結

       浮點數的運算在業務中是比較常見的,js浮點數運算會出現多位小數,如0.1+0.2 = 0.30000000000000004, 這是由於在運算的時候先把浮點數轉化成二進位制後進行運算,但是有的小數在二進位制編碼後出現無限迴圈,因而導致計算出現了誤差,在其它變成語言中也有類似的問題。

處理方法如下:

1.利用JavaScript 的toFixed(n) 方法,直接獲取N 位小數,該方法是四捨五入的, 這種方法存在精確度問題,但基本上是可以使用;
   如 var num = 0.888888888....; num.toFixed(2) = 0.89;但有時候會有問題 如 1.005 toFixed(2)=1.00  0.005 toFixed(2)=0.01

2.如果知道確定需要運算數的最大有幾位小數點 也可以直接先乘以10的位數再除, 如 (0.1*10+0.2*10)/10 = 0.3;

3.不確定小數點位數時: 可以先把數字轉化為字串型別再判斷小數點後的位數 再用方法二進行操作,這裡要注意加減乘除有點不一樣。如:

value = num.toString(); 
if (value.indexOf('.') > 0) {
    length = value.split('.')[1].length;
}

   4.直接用第三方處理浮點數的庫,幫你封裝好,引入直接可以用。 如:number-precision

具體用哪種方法 根據自己業務場景來選擇