[Python-Dev] Why don't range and xrange threat floats as floats?

L V somelauw at yahoo.com
Wed Nov 5 20:09:35 CET 2008


Thank you very much for your answer. I have wondered about this for a long time.




________________________________
From: Guido van Rossum <guido at python.org>
To: L V <somelauw at yahoo.com>
Cc: python-dev at python.org
Sent: Wednesday, November 5, 2008 7:56:23 PM
Subject: Re: [Python-Dev] Why don't range and xrange threat floats as floats?

On Wed, Nov 5, 2008 at 10:26 AM, L V <somelauw at yahoo.com> wrote:
> Why don't range and xrange threat floats as floats?
> Is there any good reason range and xrange don't threat floats as floats but
> as integers?
> When I enter float arguments in a range, the floats are treated as integers.
> (+ some warning)
>
> This is how I think it should work:
>>>>range(0, 1, 0.1)
> [0.0, 0.10000000000000001, 0.20000000000000001, 0.29999999999999999,
> 0.40000000000000002, 0.5, 0.59999999999999998, 0.69999999999999996,
> 0.80000000000000004, 0.90000000000000002]
>
> I got these results by:
>>>>[x/10. for x in xrange(10)]
>
> I'm not looking for alternatives, just for the reason that it works this
> way.

The reason is that due to the rounding issues inherent to a binary
representation of floating point, it is easy to give examples where
it's ambiguous whether the end point was meant to be included or not.
This could happen e.g. when the binary representation of the end point
was rounded up a bit, while the step would be rounded down.

-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)



      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20081105/848cd70c/attachment.htm>


More information about the Python-Dev mailing list