realmin
“返回IEEE双精度中最小的正标准化浮点数”。 eps(X)
“是ABS(X)到的正距离
下一个较大的mangitude浮点数与X“相同的精度。
如果我正确解释上述文档,那么realmin
- 可以表示的最小正数 - 必须小于eps
(0)
。但是:
>> realmin; % 2.2251e-308
>> eps(0); % 4.9407e-324
显然,eps(0)
,甚至更小,也可以表示。有人可以向我解释一下吗?
答案 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)
因此它们可以采用小于可能的最小标准化浮点数的值。非正规数在-realmin
和realmin
之间进行线性插值。
答案 1 :(得分:2)
也许这是一个定义问题,这是我在eps文档中看到的:
For all X of class double such that abs(X) <= realmin, eps(X) = 2^(-1074)