[Tutor] Re: floating point range() ?
project5 at redrival.net
Mon Jun 21 14:54:20 EDT 2004
Dave S wrote on Thu, 17 Jun 2004 18:33:52 +0100:
> Is there a floating point range() type builtin ?
> I need to generate a sequence for a 'for loop' every 0.5
> for i in reange(0,1000,5)
> print j
> The above works but seems clumbsy.
> Is there a better way ?
Write your own range function, say frange(). The implementation below is
simple and not as versatile as the built-in since it only allows positive
def frange(start, stop=0, step=1):
result = 
if step <= 0: # prevent endless loop
raise "step must be > 0"
start, stop = min(start, stop), max(start, stop)
i = start
while i < stop:
i = i + step
This function might surprise you though, due to the inaccuracies of
>>> frange(1, 2, .2)
[1, 1.2, 1.3999999999999999, 1.5999999999999999, 1.7999999999999998,
Particularly the inclusion of 1.99999999 (in fact, 2) is the one you might
not have expected here.
Real contact info (decode with rot13):
cebwrpg5 at jnanqbb.ay. Fcnz-serr! Cyrnfr qb abg hfr va choyvp cbfgf. V ernq
gur yvfg, fb gurer'f ab arrq gb PP.
More information about the Tutor