JavaScript 詭異的0.01

執筆記憶的空白發表於2016-06-17

最近,生產上專案出現了詭異的0.01 問題


原因:在配置某個物流模板輸入金額的時候,輸入了一個小數位: 19.9  ,在傳入後臺的時候 乘以了100  ,後臺int接收, 存庫變成了1989


再到前端展示的時候, 除以100 就變成了 19.89  , 比原來的19.9少了0.01 


經測試,發現,JavaScript 在進行小數位乘以100的時候,數字值會丟失0.0000000000002 ,導致數值由原來的1990  變成了 1989.99999999998 ,後臺int接收,去掉小數位就變成了1989


具體案例如下:




解決辦法: 由原來的*100 改成  *10*10 , 這樣完美解決  。  據說是因為js對浮點數計算的問題

注意:關於金額等數字計算,最好放到後臺程式去計算,儘量不要讓js做計算操作

相關文章