非程式科班出身,或對浮點精度只有少量了解的同學.
網上的教程很少有循序漸進的,作此文以彌補之。
先看乙個現象吧:
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.060000000000000005ok,出現了問題。不是我們想的那樣。0.5800000000000001
401.49999999999994
1.2329999999999999
結論是:
浮點型的加減都出現了問題。
有浮點參與的乘除運算也出現了問題。
這裡要說明一點,這只是我們舉例出現了問題,這個例子不代表全部,
在程式設計中,我們碰到的大部分的浮點計算都是準確的,小部分的浮點計算是失真的。注意,是小部分,而不是某個或者某幾個,所以碰到浮點誤差也是很正常的事情。
但實際上,在計算機中,在無限的浮點實數運算中,如果說準確的概率是撒哈拉沙漠,那麼有誤差的計算大概如浩瀚星空。
下一章:深入了解浮點精度(二。浮點在計算機的儲存)
深入了解浮點精度(四。嚴格精度的浮點運算)
上一章 深入了解浮點精度 三。浮點不準確 如果你不嚴謹要求的話,浮點型別自身的運算可以滿足一些基本的需要,但對於財務問題恐怕就不行了。為什麼呢?比如說double 100 99.999999999998 那麼在購買的時候,乙個商品賣了100元,你支付完成後,發現只支付了99.9999999998,這...
css2 1的一些深入了解(1)
最近感覺晚上9點以後有點閒,每天補充一點深入了解的東西,算是能加快進度吧 1.定位,包含塊,預設值問題 視口和包含塊不是乙個東西 初始包含塊是乙個視窗大小的矩形 對於設定有position屬性的元素,若position relative或者static那麼包含塊為最近的塊級祖先元素的內容區域 對於乙...
一次關於執行上下文的深入了解
最近在刷 冴羽 大大的j ascript深入系列文章 很良心的文章,再看到第8章j ascript深入之執行上下文的時候 發現乙個很有趣的題目。這裡做個筆記。把之前的內容串起來。畢竟看文章不如自己寫一遍心得,好記性不如爛筆頭。以下的內容很多參考了 冴羽 大大的j ascript深入系列文章 以及 九...