Steven D'Aprano <[email protected]> added the comment:
This is not a bug. It is *literally correct* that the int 9007199254740993 is
not equal to the float 9007199254740992.0 so I really don't know why you would
desire a different result. If you want to compare two floats, compare two
floats, not an int and a float.
And it's not a *potential behaviour change", it would be an actual behaviour
change, and a serious regression.
Stefan states:
> But the way I would have expected this to work is that a comparison of an
> integer to a float would first convert the integer to a float, and then
> compare the two floating point values. That's also what the code says.
No it doesn't. What the code says:
2**53 + 1 == float(2**53 + 1)
not:
float(2**53 + 1) == float(2**53 + 1)
There's no conversion on the left hand side. The code literally says to compare
an int to a float.
In general, Python is pretty good at giving as close to mathematically correct
results as possible. If you want to compare values approximately as floats, you
should explicitly convert them to floats.
----------
nosy: +steven.daprano
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue44054>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com