今天我在 Matlab 中偶然发现了这个简单的问题:
>> 1/(10^309)
ans =
0
一切都很好。现在我输入:
>> 0.0001/(10^308)
ans =
9.999999999984653e-313
并变得非常困惑。在 Matlab 中不是最小的数字realmin=2.225073858507201e-308
吗?为什么上面的输出没有给出0
?
在help realmin
中,它说:“REALMIN 最小正归一化浮点数。”
归一化的浮点数在有效数字中没有前导零 - 所以类似于 1.123 * 10^-10。如果有效数字有前导零,例如 0.0001 * 10^-10,则它是非正规的。
我认为eps(0)
给出了 Matlab 中可用的最小非正规数。