我在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()吗?
答案 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
>>>