分享至
各位大大好最近在練習javascriptif(a/b == 3){//do something}結果當a=0.3, b=0.1 時是進不去的查了一下發現0.3/0.1 = 2.99999999999999960.03/0.01 = 3 //正常0.33/0.1 = 3.3 //正常3/0.1 = 30 //正常0.3/0.01 = 30 //正常
關於那個0.3/0.1 != 3想請問一下有人知道原因嗎? 謝謝
已邀請的邦友 {{ invite_list.length }}/5
原因的部分保哥的這篇文章可以參考一下:
由於 JavaScript 使用浮點數計算所有數值,主要原因還是在於計算機最底層都採用 2 進制描述所有數值十進制的 0.1 與 0.2 換算成二進制之後,都是無法精準表達的數值。
前端工程研究:關於 JavaScript 中 Number 型別的常見地雷與建議作法
謝謝回答 看過文章後大致上了解原因了
其實這個問題也會在其它語言也會發生。,只要使用了精準數值就很容易這樣。
一般來說會搭配一下整數處理或是四捨五入。
恩 我測PHP與GO 做單純輸出是0.1+0.2=0.30.3/0.1 = 3C# 與 js 就會有精準度差的問題目前是先處理成整數再做處理
IT邦幫忙