我需要比较浮点数和不等式:
if x >= y:
但是,由于浮点精度问题,有时候应该成功的时候却失败了(x = 0.21
和y= 0.21000000000000002
)。我想创建一个epsilon:
epsilon = 0.000000001
if x >= y - epsilon:
我宁愿使用标准的机制,Python有一个math.isclose
函数可以处理等式,但是我找不到任何处理不等式的函数,所以我不得不这样写:
import math
if x > y or math.isclose(x, y):
我必须在我的应用程序中做大量的工作......很简单,我只需要创建一个函数。我的问题是,是否有一个标准的方法来处理不等式和浮点数?是否有numpy.greater_or_equal(x, y)
类型的函数?
1条答案
按热度按时间ogq8wdun1#
既然您指出函数调用的开销实际上不是问题,为什么不简单地提供:
你可以在任何你需要的地方导入它。
您的评论指出:“由于令人惊讶的浮点精度问题,这看起来像是我很容易出错的函数之一”,但由于这只依赖于
x
实际上大于y
,或者使用math.isclose()
函数,因此风险似乎不存在?(or而是将导入保持在函数之外:)