哪个是比较python中两个浮点值的最快方法?

时间:2016-09-22 06:53:53

标签: python-3.x

我在Python 3中有两个浮点值(" a"和#34; b"),每个浮点值可以有5到15个小数点。问题是,当两个值对我来说相等时,python会给我一个False。

Examples:
a=12.091824733909107, b=12.091824733909117
or also
a=12.54678, b=12.5467800000123

在上面的例子中对我来说" a"和" b"是平等的。一种解决方案是使用round(a,5)和round(b,5)来切割小数点但是使用round()百万的时间来增加时间过程。还有其他解决方案不需要使用round()吗?

1 个答案:

答案 0 :(得分:0)

你需要设置一个公差范围,这样如果a和b之间的差异低于它们,则认为它们等于

>>> def is_close(a, b, tol=1e-9):
        return abs(a-b) <= tol

>>> is_close(12.091824733909107, 12.091824733909117)
True
>>> is_close(12.54678, 12.5467800000123)
True
>>> 

或在python 3.5 +

>>> import math
>>> math.isclose(12.091824733909107, 12.091824733909117)
True
>>> math.isclose(12.54678, 12.5467800000123)
True
>>>