鉴于浮点数x
,我想找到小于x
的最大浮点数。如何在Python中执行此操作?
我尝试从x
(x - numpy.finfo(float).eps
)中减去机器epsilon,但是对于足够大的浮点数,它的值为x
,因此我需要返回的值严格小于比x
。
有一些有关如何在C#here中执行此操作的信息,但是我不知道如何在Python中执行相同的按位转换。有人知道该怎么做,还是有另一种方法来获得相同的值?
(更大的图片问题-我试图在x
的边界上以数值找到在0 < root < x
处具有奇异性的方程的根。求解器(Scipy的toms748实现)求值边界,它不能处理nan或inf值,所以我不能确切地给它x
作为边界。我不知道根与边界的距离有多近,所以我想给出一个尽可能接近x
的边界,而不实际产生一个无限大的值并使求解器崩溃。)
答案 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