我在理解這些雙精度如何影響Matlab中算術運算的結果時遇到了一些麻煩。我認爲,既然兩個&b都是雙打的,他們將能夠以這種精度進行操作。我意識到可以有四捨五入的錯誤,但由於這些數字在64位數字表示範圍內,我不認爲這會是一個問題。在Matlab中使用雙精度的算術精度
a = 1.22e-45
b = 1
a == 0
ans = 0 %a is not equal to zero
(a + b) == 1
ans = 1
爲什麼它能夠承載足夠的精度來識別!= 0,但是當加到1時它不會顯示任何變化。
我認爲尾數有52位(指數爲11位,加上1位爲64位的符號)。 * Cleve Moler *(第一版MATLAB的作者)的一篇優秀文章解釋了浮點數的所有細節:[PDF鏈接] http://www.mathworks.com/company/newsletters/news_notes/pdf/Fall96Cleve。 pdf – Amro 2010-09-13 01:25:16
@Amro:除非數字是非規格化的,否則有一個隱含的前導「1」位。所以吉姆的權利,在大多數情況下(當然這些數字)。 – 2010-09-13 01:51:42
謝謝。我仍然有辦法理解計算機中的數字表示。 – ZuluForce 2010-09-13 02:00:48