954,525 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?

A Floating Point Range Generator

By vegaseat on Oct 3rd, 2009 7:48 pm

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 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]
"""

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: