Hi Pythonistas!
Today we will discuss a common cause of bugs in Python which is checking equality of floats. Some fractions need more numbers, sometimes infinite numbers to represent accurately but in machine the number of bits are finite so when we represent floating numbers there will be a slight rounding error. You can read more on this link. Due to this sometimes we get unexpected outputs. Let us dive into the code
Code
>>> a = (0.3 * 3) + 0.1
>>> b = 1.0
>>>
>>> a == b
False
>>>
>>> b
1.0
>>> a
0.9999999999999999
We can see that a and b are not equal but using math they are equally. Logically the code is correct but our code behaves differently. This is a common mistake we make in our code. Then what is the solution
Code
>>> import math
>>>
>>> a = (0.3 * 3) + 0.1
>>> b = 1.0
>>> result = math.isclose(a, b, rel_tol=1e-9)
>>> print(result)
True
In the math module we have a method called isclose, This function checks the equality of 2 numbers with a tolerance. Here we can see that the result is True.
Hope you have learned something from this post. Please share your valuable suggestions with afsal@parseltongue.co.in