为什么是realmin> EPS(0)?

时间:2013-04-04 08:50:18

标签: matlab ieee-754

realmin“返回IEEE双精度中最小的正标准化浮点数”。 eps(X)“是ABS(X)到的正距离 下一个较大的mangitude浮点数与X“相同的精度。

如果我正确解释上述文档,那么realmin - 可以表示的最小正数 - 必须小于eps (0)。但是:

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

显然,eps(0),甚至更小,也可以表示。有人可以向我解释一下吗?

2 个答案:

答案 0 :(得分:10)

这是一个浮点问题。你应该阅读denormal numbers

简而言之,realmin返回最小的正规范化浮点数。但是,可能有一个小于此值的非正规数,并且仍可以浮点表示,这就是eps(0)返回的数据。

非正规数字的快速解释

二进制浮点数如下所示:

1.abcdef * 2^M

其中abcdefg各为0或1,而M是-1022 <= M <= 1023范围内的数字。这些被称为< em>规范化浮点数。可能的最小规范化浮点数为1 * 2^(-1022)

非正规数字看起来像这样

0.abcdef * 2^(-1022)

因此它们可以采用小于可能的最小标准化浮点数的值。非正规数在-realminrealmin之间进行线性插值。

答案 1 :(得分:2)

也许这是一个定义问题,这是我在eps文档中看到的:

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