Matlab:找到下一个较小的浮点数

Fal*_*ita 3 floating-point matlab

Matlab函数eps(x)返回"从abs(x)到下一个与之相同精度的较大浮点数的正距离x".我用它来计算大于xvia 的最小浮点数x + eps(x).我还想获得小于的最大浮点数x,但我不知道类似的功能eps会促进这一点.如何找到最大浮点数小于x

And*_*uri 5

几乎eps所有情况下都可以减去.

但是,正如您可能已经意识到的那样,当mantisa更改时,或者换句话说,当您想要减去2的幂时,这不适用.

因此,负端eps可以很容易地实现,因为知道电流eps小于到下一个2次幂的距离,这将触发阶跃变化.因此,eps我们的数字减去它eps应该做的伎俩.

function out=neps(in)

out=eps(in-eps(in));
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常

eps(2)

     4.440892098500626e-16

neps(2)

     2.220446049250313e-16
Run Code Online (Sandbox Code Playgroud)