This article has been dead for over three months
You
# a range generator that handles floating point values
# tested with Python25 and Python31 by vegaseat
def frange(start, stop=None, step=1.0, delta=0.0000001):
"""
a range generator that handles floating point numbers
uses delta fuzzy logic to avoid float rep errors
eg. stop=6.4 --> 6.3999999999999986 would slip through
"""
# if start is missing it defaults to zero
if stop == None:
stop = start
start = 0.0
# allow for decrement
if step <= 0:
while start > (stop + delta):
yield start
start += step
else:
while start < (stop - delta):
yield start
start += step
# test, should stop before 6.4
# without the fuzzy logic 6.4 would give a problem
for x in frange(6.0, 6.4, 0.1):
print(x)
print("-"*20)
# test decrement
for x in frange(-6.0, -6.4, -0.1):
print(x)
print("-"*20)
# test default start and step keyword arg
print(list(frange(5, step=0.5)))
"""my output -->
6.0
6.1
6.2
6.3
--------------------
-6.0
-6.1
-6.2
-6.3
--------------------
[0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5]
"""