7

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

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

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

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

4

2 回答 2

10

这是一个浮点问题。你应该去阅读非正规数

简而言之,realmin返回最小的正归一化浮点数。但是有可能有比这更小的非正规数并且仍然可以用浮点数表示,这就是eps(0)返回的结果。

非正规数的快速解释

二进制浮点数如下所示:

1.abcdef * 2^M

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

非正规数看起来像这样

0.abcdef * 2^(-1022)

因此它们可以采用小于可能的最小归一化浮点数的值。-realmin非正规数在和之间线性插值realmin

于 2013-04-04T09:04:34.017 回答
2

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

For all X of class double such that abs(X) <= realmin, eps(X) = 2^(-1074)
于 2013-04-04T08:54:07.173 回答