Python 在具有浮点边界的区间内查找整数时的舍入问题

Python 在具有浮点边界的区间内查找整数时的舍入问题,python,floating-point,integer,Python,Floating Point,Integer,我有一个代码,它执行以下操作。在某些循环中,它求解二次不等式(ax^2+bx+c0)并在根之间找到整数(使用我自己的函数integer\u-inside) 但是,在最后一种情况下,np.root([1,-9,20])正式返回数组([5,4.]),但integer\u In返回一个空数组。如果您检查: >>> np.roots([1, -9, 20]) == np.array([5., 4.]) array([False, False]) 这是因为在引擎盖下np.根([1,-9

我有一个代码,它执行以下操作。在某些循环中,它求解二次不等式(ax^2+bx+c0)并在根之间找到整数(使用我自己的函数
integer\u-inside

但是,在最后一种情况下,
np.root([1,-9,20])
正式返回
数组([5,4.])
,但
integer\u In
返回一个空数组。如果您检查:

>>> np.roots([1, -9, 20]) == np.array([5., 4.])
array([False, False])
这是因为在引擎盖下
np.根([1,-9,20])
返回
数组([4.000000000000001,4.999999999999])
当然,里面没有整数

第一个想法是使用
np.round()
。但这意味着我必须记住它,并将
np.round()
放在代码中进行相应计算的任何地方。其次,选择哪种精度也不明显


这个问题是不可避免的,还是有其他通用的python解决方案?

按如下方式调用numpy函数如何:

np.roots([1, -9, 18]).astype(int)

Out:
[6 3]
这样可以确保函数的输出始终为整数形式。除非您仍然希望访问浮点值,但这应该不是问题,因为您可以将np.root的输出存储到变量中,并在需要时应用“.astype(int)”

val = np.roots([1, -9, 18])

print("val: ", val)

print("val_int: ", val.astype(int))

Out:
val:  [6. 3.]

val_int:  [6 3]

不幸的是,这没有多大帮助,因为我的目标不是让整数输出为
np.root()
,而是在这个输出中找到整数。请看我问题中的第一个示例。@user7647857,哦,好吧,我不好,我现在明白了,我假设问题出在numpy函数的输出上。在这种情况下,我会问您是否可以在函数中为您的
integer\u提供代码
val = np.roots([1, -9, 18])

print("val: ", val)

print("val_int: ", val.astype(int))

Out:
val:  [6. 3.]

val_int:  [6 3]