Range With Floating Point Numbers And Negative Steps
I wrote the following for creating a range with negative floating point steps: def myRange(start, stop, step): s = start if step < 0: while s > stop:
Solution 1:
Not all floating point numbers can be represented exactly. For example, this is the output with Python 3.5:
1
0.9
0.8
0.7000000000000001
0.6000000000000001
0.5000000000000001
0.40000000000000013
0.30000000000000016
0.20000000000000015
0.10000000000000014
1.3877787807814457e-16
One solution could be rounding:
def myRange(start, stop, step):
s = start
ifstep < 0:
while s > stop:
yield s
s += step
s = round(s, 15)
ifstep > 0:
while s < stop:
yield s
s += step
s = round(s, 15)
r = myRange(1,0,-0.1)
for n in r:
print(n)
Output:
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.0
Post a Comment for "Range With Floating Point Numbers And Negative Steps"