鍍金池/ 問答/Linux  HTML/ JS數字計算不精確的原因?

JS數字計算不精確的原因?

在控制臺直接輸入:

6999*0.7 // 4899.299999999999

找到一片關于這方面的文章:http://www.ruanyifeng.com/blo...

但是讀了還是很不理解,涉及到的那兩個標準看的我頭暈。
有沒有通俗一點的說法,來解釋一下為什么?

回答
編輯回答
怣人

1/3+1/3請用10位小數表示。

2018年5月12日 09:49
編輯回答
離夢

其實對于浮點數的四則運算,幾乎所有的編程語言都會有類似精度誤差的問題,只不過在 C++/C#/Java 這些語言中已經封裝好了方法來避免精度的問題,而 JavaScript 是一門弱類型的語言,從設計思想上就沒有對浮點數有個嚴格的數據類型,所以精度誤差的問題就顯得格外突出。

2017年6月4日 18:05
編輯回答
心夠野

可以使用js bigdecimal http://blog.csdn.net/xxzblog/...

2018年6月21日 09:40
編輯回答
胭脂淚

用得著了解那么詳細嗎,反正就是計算中遇到浮點數的時候注意下就好了

2018年5月23日 03:41
編輯回答
蟲児飛

自己思考一下,假設一共只有 64位 的二進制空間,怎么表示任意的一個小數?

2018年9月14日 05:24
編輯回答
玩控

計算機中計算以二進制計算,計算的結果在二進制中超過位數后就溢出失效了,被省略去調后就丟失精度了。應該是這個意思吧

2018年1月12日 16:35
編輯回答
別逞強

通俗一點就是人類使用十進制,計算機使用二進制,一個十進制有限小數轉變成二進制可能就是一個無限小數。無限小數怎么記?只能砍掉很后面的小數部位,記錄部分數據。所以就不精確嘍。

2018年2月5日 23:15
編輯回答
旖襯

通俗點說就是有的小數用二進制無法直接精確表示

2017年8月4日 07:44
編輯回答
瘋浪

首先,計算機采用二進制處理數字,不能夠精確表示浮點數。其次,javascript沒有處理浮點數精度的方法,很多浮點數都是無限小數,在運算過程中,會被舍棄掉一部分,造成精度的丟失。所以就會產生你說的情況。

2017年10月2日 01:57