色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

NET里兩個double相加為什么是1.3+0.1=1.4000001?

錢浩然2年前12瀏覽0評論

對于開發者而言,或多或少都聽前輩們提及過:不要對浮點數進行比較!其實不管是什么編程語言,只要涉及到浮點數的加減乘除運算,其結果都會偏離預期!這一點應該作為常識銘記于心。

浮點數存在精度丟失現象

不管是單精度浮點數還是雙精度浮點數,它們都無法精確表示數值。任何數據在計算機中都是以二進制存儲的,二進制浮點數并不能精確表示類似0.5這樣的小數,通俗的說就是:小數的二進制并不一定是精確的(比如說十進制不能精確表示1/3,同理二進制也不能精確表示1/3)。

一個小數要進入計算機中要經過幾個步聚:

  • Step1:轉換為二進制

  • Step2:用二進制科學計算法表示

  • Step3:表示成IEEE754形式(幾乎所有編程語言的浮點數都是采用IEEE標準的)

在第一步和第三步時,都會存在丟失精度的可能,然后再將兩個浮點數進行數學運算,結果會更加偏離預期。

浮點數精度丟失解決方案

特別是在金融類項目中,不可避免會出現一些小數,此時我們絕對要禁止使用浮點數來表示這些小數,而應該改為Decimal庫來存儲小數。

以上就是我的觀點,對于這個問題大家是怎么看待的呢?歡迎在下方評論區交流~我是科技領域創作者,十年互聯網從業經驗,我了解更多科技知識!