JS中0.28*100, 0.29*100 和 0.28/100 得到的值精準度問題
阿新 • • 發佈:2021-01-07
JS中0.28*100, 0.29*100 和 0.28/100 得到的值精準度問題
阿貓阿狗阿倉鼠 2020-05-09 10:41:30 704 收藏 分類專欄: 計算機基礎 web前端 最後釋出:2020-05-09 10:41:30 首次釋出:2020-05-09 10:41:30 收起包括0.07*100=7.000000000000001, 2.9/100=0.028999999999999998等等
場景還原:
乘法:
0.28和0.29乘100都沒有得到預期的值.
除法:
0.28除100沒有得到預期的值, 0.29正常, 但是2.9/100依然有問題.
原因:
浮點數不能直接進行相等比較, 計算機中是採用近似值來儲存浮點數的,當進行浮點數相關的計算時,需要時刻提防由於精度問題所導致的誤差,並注意避免那些會影響到結果正確性的誤差(所謂正確性,就是誤差超出了所允許的最大範圍)。
解決辦法:
因為我的需求是將元為單位的數值轉成分給到資料庫儲存,
所以不存在0.001這種分以下的情況
也不存在有浮點數返回給前端做除法的情況
以下僅供元轉分這種使用場景參考
-
// 僅供元轉分這種使用場景參考
-
parseInt(
0.28 *
100 +
0.1)
//其中加0.1是解決0.29*100=28.9xxx的問題
拓展: