tolomea tolomea - 2 months ago 10
Python Question

What is the best way to compare floats for almost-equality in Python?

It's well known that comparing floats for equality is a little fiddly due to rounding and precision issues.

For example:
http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm

What is the recommended way to deal with this in Python?

Surely there is a standard library function for this somewhere?

Answer

Python 3.5 adds the math.isclose and cmath.isclose functions as described in PEP 485.

If you're using an earlier version of Python, the equivalent function is given in the documentation.

def isclose(a, b, rel_tol=1e-09, abs_tol=0.0):
    return abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
Comments