# floatrange’s documentation!¶

floatrange - range() like with float numbers.

author: | Laurent Pointal <laurent.pointal@laposte.net> |
---|---|

copyright: | Laurent Pointal, 2011-2015 |

license: | MIT |

version: | 1.0 |

## Usage example¶

(note computation approximation and display with floats)

```
>>> from floatrange import floatrange
>>> floatrange(5)
floatrange(0.0, 5.0, 1.0)
>>> list(floatrange(5))
[0.0, 1.0, 2.0, 3.0, 4.0]
>>> list(floatrange(3.2,5.4,0.2))
[3.2, 3.4000000000000004, 3.6, 3.8000000000000003, 4.0, 4.2, 4.4,
4.6000000000000005, 4.800000000000001, 5.0, 5.2]
>>> 6 in floatrange(1,8)
True
>>> 6.1 in floatrange(1,8,1,prec=0.2)
True
>>> 6.1 in floatrange(1,8,1,prec=0.05)
False
>>> list(reversed(floatrange(5)))
[4.0, 3.0, 2.0, 1.0, 0.0]
>>> list(floatrange(10.1,9.7,-0.1))
[10.1, 10.0, 9.9, 9.799999999999999]
```

## floatrange class¶

class`floatrange.`

`floatrange`

([start, ]stop[,step[,prec]]) → floatrange object¶Build a virtual sequence of floating point numbers from

`start`

to`stop`

by`step`

. Set float equality precision with`prec`

(default 0 for strict equality).Unlike Python range(), generated values are floating point. Like Python range(), the

`stop`

value isnotincluded (to have the stop value included, just add step*0.1 to it).A

`floatrange`

object is usable like Python`range`

, to iterate on the values, to test for its length, to get the value at an index, to get length of values sequence, to search for the index of a value, to count the number of occurrences of a value.As floating point computation may lead to slightly different values, you should take care:

- Test for presence of a value in the range use
`prec`

, which is by default zero forexactequality.- When reverting the
`floatrange`

, the new object is created togeneratereverse values, this can build values with computational differences. To have exact same values in reverse order, cast to a`list`

and reverse it.

## Other solutions¶

If you have the scipy’s numpy
package installed, see `numpy.arange()`

and `numpy.linspace()`

functions
(docs for
arange and
linspace).
If you have heavy computation, this is the way to go.

Note these differences between numpy functions and floatrange:

- floatrange generate values when needed, like
`range()`

. - floatrange has a precision parameter
`prec`

to deal with inaccurate floating point computation. - floatrange is a pure Python module.

And searching for `Python float range`

, or `frange`

will give you other solutions
(see also comments on these solutions when available).