Bug in floating point multiplication
Steven D'Aprano
steve at pearwood.info
Thu Jul 2 10:52:55 EDT 2015
Despite the title, this is not one of the usual "Why can't Python do
maths?" "bug" reports.
Can anyone reproduce this behaviour? If so, please reply with the version of
Python and your operating system. Printing sys.version will probably do.
x = 1 - 1/2**53
assert x == 0.9999999999999999
for i in range(1, 1000000):
if int(i*x) == i:
print(i); break
Using Jython and IronPython, the loop runs to completion. That is the
correct behaviour, or so I am lead to believe. Using Python 2.6, 2.7 and
3.3 on Centos and Debian, it prints 2049 and breaks. That should not
happen. If you can reproduce that (for any value of i, not necessarily
2049), please reply.
See also http://bugs.python.org/issue24546 for more details.
--
Steven
More information about the Python-list
mailing list