Matlab函数eps(x)
返回“从abs(x)到下一个与x
具有相同精度的较大浮点数的正距离”。我用它来计算大于x
的最小浮点数,通过x + eps(x)
。我还想获得小于x
的最大浮点数,但我不知道类似于eps
的函数可以促进这一点。如何找到小于x
的最大浮点数?
答案 0 :(得分:5)
您几乎可以在所有情况中减去eps
。
然而,正如您可能已经意识到的那样,当mantisa更改时,或者换句话说,当您想要减去2的幂时,这不适用。
负面eps
然后很容易实现,因为知道当前eps
小于下一个2次幂的距离,这将触发步进变化。因此,我们的数字eps
减去其eps
应该可以解决问题。
function out=neps(in)
out=eps(in-eps(in));
这似乎工作正常
eps(2)
4.440892098500626e-16
neps(2)
2.220446049250313e-16