2013-04-04 45 views
7

realmin「以IEEE雙精度返回最小的正歸一化浮點數」。 eps(X)「是從ABS(X)到 的正距離,與X相同的精度浮點數下一個更大。爲什麼realmin> eps(0)?

如果我正確解釋上述文檔,則realmin - 可表示的最小正數 - 必須小於eps (0)。但是:

>> realmin; % 2.2251e-308 
>> eps(0); % 4.9407e-324 

顯然,eps(0),這是更小,可也表示。有人可以向我解釋這一點嗎?

回答

10

這是一個浮點問題。你應該去閱讀denormal numbers

簡而言之,realmin返回最小的正數歸一化的浮點數。但是可能有比這更小的非正規數,並且仍然可以浮點表示,這就是eps(0)返回的結果。

反規範數的快速解釋

二進制浮點數看起來像這樣:

1.abcdef * 2^M 

其中abcdefg各自是0或1,和M是範圍-1022的數< = M < = 1023.這些被稱爲歸一化的浮點數。儘可能最小的歸一化浮點數是1 * 2^(-1022)

的非正規數字看起來像這樣

0.abcdef * 2^(-1022) 

,使他們能夠採取比最小的歸一化的浮點數值越小。非正規數在-realminrealmin之間線性插值。

2

也許是定義的問題,這是我EPS的文檔中看到:

For all X of class double such that abs(X) <= realmin, eps(X) = 2^(-1074)