On 2018-05-29 21:34:21 -0400, José María Mateos wrote: > On Wed, May 30, 2018 at 01:07:38AM +0000, Ruifeng Guo wrote: > > We encountered a bug in Python recently, we checked the behavior for Python > > version 2.7.12, and 3.1.1, both version show the same behavior. Please see > > below the unexpected behavior in "red text". [...] > In [3]: 1000 * 1.017 > Out[3]: 1016.9999999999999 > > So there you have it.
To expand a bit on that, the reason, why 1000 * 1.017 isn't 1017 isn't that an x86 processor can't multiply, it is that 1017/1000 cannot be exactly represented in a binary fraction (just like 1/7 cannot be exactly represented in a decimal fraction). So when you type 1.017, the computer really stores 1.016999999999999904076730672386474907398223876953125 and when you multiply that by 1000, the result would be 1016.999999999999904076730672386474907398223876953125, but that needs a few bits too much, so it rounded down to 1016.9999999999998863131622783839702606201171875. hp -- _ | Peter J. Holzer | we build much bigger, better disasters now |_|_) | | because we have much more sophisticated | | | h...@hjp.at | management tools. __/ | http://www.hjp.at/ | -- Ross Anderson <https://www.edge.org/>
signature.asc
Description: PGP signature
-- https://mail.python.org/mailman/listinfo/python-list