JS的計算時精度丟失問題

精度丟失主要有是哪方面
1.小數(shù)計算

如:0.1+0.2 !== 0.3;0.1*0.2 !== 0.03;

2.大數(shù)計算

如:9999999999999999 === 10000000000000001;

3.toFixed()四舍五入不準

如:1.335.toFixed(2) // 1.33;1.336.toFixed(2) // 1.34;

計算不準確的原因

二進制模仿十進制進行四舍五入,而二進制只有0和1,于是就0舍1入,于是就導致了小數(shù)計算不精確。大數(shù)的精度丟失本質上是和小數(shù)一樣,js中表示最大的數(shù)是Math.pow(2, 53),十進制即 9007199254740992;大于該數(shù)的值可能會丟失精度。

怎么解決

小數(shù)的話,一般轉成整數(shù)進行計算,然后對結果做除法;同樣也可以直接對結果進行4舍5入;
對于大數(shù)出現(xiàn)的問題概率較低,畢竟還要運算結果不超過最大數(shù)就不會丟失精度;

參考來源

javaScript數(shù)字精度丟失問題總結
js中精度問題以及解決方案
JavaScript 中精度問題以及解決方案

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容