数字小于realmin

时间:2012-04-21 18:29:39

标签: matlab precision

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

>> 1/(10^309)

ans =

     0

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

>> 0.0001/(10^308)

ans =

    9.999999999984653e-313

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

2 个答案:

答案 0 :(得分:6)

realmin返回IEEE双精度中最小的正规范化浮点数。

有较小的正denormal个浮点数。看看“What Every Computer Scientist Should Know About Floating-Point Arithmetic”。

您可能对eps更感兴趣,它返回不同数字之间的最小增量。

答案 1 :(得分:5)

help realmin中,它说:“REALMIN最小的正标准化浮点数。”

规范化的浮点数在有效数字中没有前导零 - 所以类似于1.123 * 10 ^ -10。如果有效数具有前导零,如0.0001 * 10 ^ -10,那么它是denormal

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