由生成器生成的可迭代对象迭代时有bug
来源:3-4 如何进行反向迭代以及如何实现反向迭代
qq_笑冰凌_04143298
2018-03-19
#coding:utf-8
class FloatRange:
def __init__(self,start,end,step=0.1):
self.start = start
self.end = end
self.step = step
def __iter__(self):
t = self.start
while t <=self.end:
yield t
t = t + self.step
def __reversed__(self):
t = self.end
while t>= self.start:
yield t
t = t-self.step
for x in FloatRange(1.0,3.0,0.2):
print x
#输出结果如下,缺少3.0这个值,而改成FloatRange(1.0,2.0,0.2)时,就会输出1.0,1.2,1.4,1.6,1.8,2.0
1.0
1.2
1.4
1.6
1.8
2.0
2.2
2.4
2.6
2.8
写回答
1回答
-
程序员硕
2018-03-20
这是浮点数误差的问题, 可以使用decimal
00
相似问题