1. 程式人生 > 其它 >JS中0.28*100, 0.29*100 和 0.28/100 得到的值精準度問題

JS中0.28*100, 0.29*100 和 0.28/100 得到的值精準度問題

技術標籤:計算機基礎web前端

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這種分以下的情況

也不存在有浮點數返回給前端做除法的情況

以下僅供元轉分這種使用場景參考


     
  1. // 僅供元轉分這種使用場景參考
  2. parseInt( 0.28 * 100 + 0.1) //其中加0.1是解決0.29*100=28.9xxx的問題

拓展:

一個由於浮點數精度導致的錯誤