踩坑:js 小數運算出現精度問題

背景

在學習小程序商城源碼時發現了這個問題,單價可能出現小數,小數之間運算結果會莫名其妙多出一大串數字,好比下面這樣👇。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 1101htm

注意看最後四位原本是 1100,由於截取變成了 1100。(在線進制轉換能夠驗證結果)blog

運算精度出現問題的根本緣由也就在於此。get

相關文章
相關標籤/搜索