深入了解浮點精度 一,有趣的現象

2021-09-25 13:14:48 字數 705 閱讀 2242

非程式科班出身,或對浮點精度只有少量了解的同學.

網上的教程很少有循序漸進的,作此文以彌補之。

先看乙個現象吧:

system.out.println(0.05 + 0.01);

system.out.println(1.0 - 0.42);

system.out.println(4.015 * 100);

system.out.println(123.3 / 100);

列印結果:

0.060000000000000005

0.5800000000000001

401.49999999999994

1.2329999999999999 

ok,出現了問題。不是我們想的那樣。

結論是:

浮點型的加減都出現了問題。

有浮點參與的乘除運算也出現了問題。

這裡要說明一點,這只是我們舉例出現了問題,這個例子不代表全部,

在程式設計中,我們碰到的大部分的浮點計算都是準確的,小部分的浮點計算是失真的。注意,是小部分,而不是某個或者某幾個,所以碰到浮點誤差也是很正常的事情。

但實際上,在計算機中,在無限的浮點實數運算中,如果說準確的概率是撒哈拉沙漠,那麼有誤差的計算大概如浩瀚星空。

下一章:深入了解浮點精度(二。浮點在計算機的儲存)

深入了解浮點精度(四。嚴格精度的浮點運算)

上一章 深入了解浮點精度 三。浮點不準確 如果你不嚴謹要求的話,浮點型別自身的運算可以滿足一些基本的需要,但對於財務問題恐怕就不行了。為什麼呢?比如說double 100 99.999999999998 那麼在購買的時候,乙個商品賣了100元,你支付完成後,發現只支付了99.9999999998,這...

css2 1的一些深入了解(1)

最近感覺晚上9點以後有點閒,每天補充一點深入了解的東西,算是能加快進度吧 1.定位,包含塊,預設值問題 視口和包含塊不是乙個東西 初始包含塊是乙個視窗大小的矩形 對於設定有position屬性的元素,若position relative或者static那麼包含塊為最近的塊級祖先元素的內容區域 對於乙...

一次關於執行上下文的深入了解

最近在刷 冴羽 大大的j ascript深入系列文章 很良心的文章,再看到第8章j ascript深入之執行上下文的時候 發現乙個很有趣的題目。這裡做個筆記。把之前的內容串起來。畢竟看文章不如自己寫一遍心得,好記性不如爛筆頭。以下的內容很多參考了 冴羽 大大的j ascript深入系列文章 以及 九...