On Tue, May 29, 2018 at 7:07 PM, Ruifeng Guo <ruifeng....@synopsys.com> wrote:
> Hello,
> 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".
>
> Thanks,
> Ruifeng Guo
>
> From: Brian Archer
> Sent: Tuesday, May 29, 2018 5:57 PM
> To: Ruifeng Guo <rf...@synopsys.com>
> Subject: Python Bug
>
> Python 3.1.1 (r311:74480, Nov 20 2012, 09:11:57)
> [GCC 4.2.2] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> a=1017.0
>>>> print(int(a))
> 1017
>>>> b=1000*1.017
>>>> print(b)
> 1017.0
>>>> int(b)
> 1016
>>>> c=1017.0
>>>> int(c)
> 1017

Try this, and you'll see what the problem is:

>>> repr(b)
'1016.9999999999999'

The value of b is not really 1017, but fractionally less as a result
of floating point rounding error, because 1.017 cannot be exactly
represented as a float.

In Python 3.2, the str() of the float type was changed to match the
repr(), so that when you use print() as above you will also get this
result:

>>> print(b)
1016.9999999999999

By the way, Python 3.1.1 is really old (six years!). I recommend
upgrading if possible.
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to