2013-04-04 47 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)