【发布时间】:2019-02-05 15:55:45
【问题描述】:
在 MATLAB 中,如果我执行 realmax - 1000000 == realmax,我会得到一个逻辑 1(真)作为答案。这是为什么呢?
【问题讨论】:
标签: matlab numerical-computing
在 MATLAB 中,如果我执行 realmax - 1000000 == realmax,我会得到一个逻辑 1(真)作为答案。这是为什么呢?
【问题讨论】:
标签: matlab numerical-computing
您会得到一个真实的结果,因为1000000(即1e6)的值远小于double precision variable 的the floating point relative accuracy 的值,其值等于或接近最大限制。例如:
>> realmax-1e6==realmax % Subtract 1 million
ans =
logical
1 % Still equal; not big enough to register a change
>> realmax-eps(realmax)==realmax % Subtract the distance to the next largest value
ans =
logical
0 % Unequal; yeah, that's big enough to matter
简而言之,最大限制(即eps(realmax))的可表示数字之间的距离约为10^292。减去1e6 的很多 小值,得到的结果只是四舍五入回到原来的值。
【讨论】: