为什么在 MATLAB 中 realmax 减去某些东西仍然等于 realmax?
Why in MATLAB is realmax minus something still equal to realmax?
在 MATLAB 中,如果我这样做 realmax - 1000000 == realmax
,我会得到一个逻辑 1(真)作为答案。这是为什么?
您得到的结果是真实的,因为 1000000
的值(即 1e6
)远小于处于或接近最大限制的值的 the floating point relative accuracy of a double precision variable。例如:
>> 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
得到的结果刚好四舍五入到原来的值。
您可以找到更全面的处理浮点数的解释here and here。
在 MATLAB 中,如果我这样做 realmax - 1000000 == realmax
,我会得到一个逻辑 1(真)作为答案。这是为什么?
您得到的结果是真实的,因为 1000000
的值(即 1e6
)远小于处于或接近最大限制的值的 the floating point relative accuracy of a double precision variable。例如:
>> 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
得到的结果刚好四舍五入到原来的值。
您可以找到更全面的处理浮点数的解释here and here。