jquery解決小數(shù)點(diǎn)相加精度缺失問題
和大家分享一個有趣的測試:
0.1+0.2 == 0.3 //false
頓時郁悶,好吧!原來0.1+0.2變成:0.30000000000000004
再來一個 2.4/0.8 =>2.9999999999999996 沒辦法換種方式,都轉(zhuǎn)換成整數(shù) (2.4 * 100)/(0.8 * 100)
10.22 現(xiàn)在要減去 0.11 結(jié)果值又出現(xiàn)了很多的小數(shù) 10.110000000000001,然后我就用了 toFixed 方法來過濾小數(shù),但是不知道跟前面那種轉(zhuǎn)換成整數(shù)后再執(zhí)行哪種效率高,好!還是試下再說吧!

查了一些資料,一是 JavaScript 浮點(diǎn)數(shù)計算的 Bug,另一個是和計算機(jī)最終轉(zhuǎn)換成二進(jìn)制計算有關(guān)系,但是為什么不是所有小數(shù)都會有這種現(xiàn)象,目前我也不清楚,有時間再去深入研究一下。
解決方法:
解決這種問題兩種方法,第一種就是利用JavaScript 的toFixed(n) 方法,直接獲取N 位小數(shù),不過,個人覺得這種方法在數(shù)據(jù)精度上會有一些問題。如果數(shù)據(jù)精度要求不高的話可以使用。
alert((0.1 + 0.2).toFixed(1));
第二種方法就是自己編寫運(yùn)算方法。以下是自定義加法函數(shù),使用此方法進(jìn)行相加會避免上面問題。


服務(wù)熱線: