matlab - 为什么 realmin > eps(0)?

标签 matlab ieee-754

realmin “以 IEEE double 返回最小正归一化 float ”。 eps(X) "是从 ABS(X) 到 与 X 具有相同精度的下一个更大的 float ”。

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

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

显然,eps(0) 更小,也可以表示。谁能给我解释一下?

最佳答案

这是一个 float 问题。你应该去阅读 denormal numbers .

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

非正规数的快速解释

二进制 float 如下所示:

1.abcdef * 2^M

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

非正规数看起来像这样

0.abcdef * 2^(-1022)

因此它们可以取小于可能的最小归一化 float 的值。非正规数在 -realminrealmin 之间线性插值。

关于matlab - 为什么 realmin > eps(0)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15806537/

相关文章:

matlab - A=[x; 是什么意思? y'] 在 Matlab 中是什么意思?

matlab - 在子图的情况下,如何为所有 x 轴和 y 轴使用通用标签?

java - 为什么我的 float 被截断?

c - 随机生成带 float 的 C 程序

algorithm - 生成算法舍入错误报告的 MATLAB 脚本

r - 在 R 或 Matlab 中绘制这样颜色的多边形

matlab - 从 uitable 获取选定的单元格索引

c - IEEE 浮点表示

在保留顺序的同时将 float 转换为无符号整数

floating-point - 在 AVX 中寻找绝对