tolomea - 6 months ago 31

Python Question

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)
```