I have two numbers –
3.125000 Mbytes and 2.954880 Mbytes.
I want to compare them and it should return True since they are almost 3Mbytes. How can I do so in Python3.
I tried doing
However, this returns
False. I really don’t understand how to put tolerance here.
math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)
I am using Python 3.5.2.
The expected result is
The actual result is
math.isclose is really meant for dealing with floating-point imprecisions. You can use it for this, but you need to tune it appropriately: the numbers in your example are more than
If you’re not worried about floating-point imprecisions, the better way to compare them is the obvious one:
def equivalent(a, b): return abs(a-b) < 0.1
Your absolute tolerance is set to
0.1, so the difference would have to be less than
0.1 to consider them equal;
3.125000 - 2.954880 is (rounded)
0.17012, which is too big.
If you want them to be considered
close, increase your tolerance a bit, e.g.:
math.isclose(3.125000, 2.954880, abs_tol=0.2)
True as you expect.