您如何找到低于某个值的最大浮标?

时间:2019-06-17 20:21:52

标签: python numpy floating-point

鉴于浮点数x,我想找到小于x的最大浮点数。如何在Python中执行此操作?

我尝试从xx - numpy.finfo(float).eps)中减去机器epsilon,但是对于足够大的浮点数,它的值为x,因此我需要返回的值严格小于比x

有一些有关如何在C#here中执行此操作的信息,但是我不知道如何在Python中执行相同的按位转换。有人知道该怎么做,还是有另一种方法来获得相同的值?

(更大的图片问题-我试图在x的边界上以数值找到在0 < root < x处具有奇异性的方程的根。求解器(Scipy的toms748实现)求值边界,它不能处理nan或inf值,所以我不能确切地给它x作为边界。我不知道根与边界的距离有多近,所以我想给出一个尽可能接近x的边界,而不实际产生一个无限大的值并使求解器崩溃。)

1 个答案:

答案 0 :(得分:6)

您正在描述numpy.nextafter的基本用法。

>>> import numpy as np
>>> np.nextafter(1.5, 0.0)  # biggest float smaller than 1.5
1.4999999999999998
>>> np.nextafter(1.5, 2.0)  # smallest float bigger than 1.5
1.5000000000000002