An example of a range generator that handles floating point numbers, appropriately called frange(). The function range() or the generator xrange() can only be used for integers. Note that xrange() now is range() in Python3.
A Floating Point Range Generator
# 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]
"""
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.