在學習小程序商城源碼時發現了這個問題,單價可能出現小數,小數之間運算結果會莫名其妙多出一大串數字,好比下面這樣👇。html
在此以前我是知道 js 中著名的 0.1 + 0.2 != 0.3
的問題的,但是在自個寫項目時壓根歷來沒注意太小數運算可能出現的問題。寫這篇文章但願之後能牢記於心。json
上面能夠看到 並非全部小數運算都會出現精度丟失問題,小數運算爲何會出現精度丟失?小程序
上面是小數轉二進制規則,對 0.1 作運算以後獲得學習
0.000 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 (1100)......
3d
後面 1100
是無限循環的,計算機存儲數據會給指定大小,好比 double 類型會給 64 個字節來存儲,這就意味着上面那串數字得截取,變成了:code
0.000 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1101
htm
注意看最後四位原本是 1100
,由於截取變成了 1100
。(在線進制轉換能夠驗證結果)blog
運算精度出現問題的根本緣由也就在於此。get