数字小于realmin

fti*_*sem 5 precision matlab

今天我在Matlab中偶然发现了这个简单的问题:

>> 1/(10^309)

ans =

     0
Run Code Online (Sandbox Code Playgroud)

一切都很好.现在我输入:

>> 0.0001/(10^308)

ans =

    9.999999999984653e-313
Run Code Online (Sandbox Code Playgroud)

而且非常困惑.在Matlab中不是最小的数字realmin=2.225073858507201e-308吗?为什么上面的输出没有给出0

Ano*_*ous 6

realmin返回IEEE双精度中最小的正标准化浮点数.

存在较小的正非正规浮点数.看看" 每个计算机科学家应该知道的浮点运算 ".

您可能更感兴趣的eps是返回不同数字之间的最小增量.


Ric*_*nte 5

在中help realmin,它说:“ REALMIN最小正归一化浮点数”。

标准化的浮点数的有效位数不包含前导零-类似于1.123 * 10 ^ -10。如果有效数具有前导零,例如0.0001 * 10 ^ -10,则它是不规范的

我认为eps(0)给出了Matlab中最小的非正规数。