为什么realmin> eps(0)?

And*_*eas 7 matlab ieee-754

realmin"返回IEEE双精度中最小的正标准化浮点数".eps(X)"是从ABS(X)到下一个更大的与M"相同精度的芒度浮点数的正距离.

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

>> realmin; % 2.2251e-308
>> eps(0);  % 4.9407e-324
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*lor 10

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

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

非正规数的快速解释

二进制浮点数如下所示:

1.abcdef * 2^M
Run Code Online (Sandbox Code Playgroud)

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

非规范数字看起来像这样

0.abcdef * 2^(-1022)
Run Code Online (Sandbox Code Playgroud)

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