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

Steve Holden steve at holdenweb.com
Wed Nov 5 14:11:26 EST 2008


Matthieu Brucher wrote:
> 2008/11/5 L V <somelauw at yahoo.com>:
>> 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.
>
It works this way because you can't be sure that you won't get an extra
increment. When you repeatedly add fractions together, the desired final
 result might be just less or just more than the actual integral value.
If it's just less you will get an extra increment. It just doesn't work.

regards
 Steve
-- 
Steve Holden        +1 571 484 6266   +1 800 494 3119
Holden Web LLC              http://www.holdenweb.com/




More information about the Python-list mailing list