当我尝试创建从a
到b
的增量列表时(类似于[1,1.1,1.2,1.3,...,2](a = 1,b = 2) ),然后我开始遇到我提出的具体代码的问题:
def Range(a,b,r):
lst1=[]
y=a
while y<b:
lst1.append(round(float(y+10**-r),r))
y+=10**-r
return lst1
print Range(1,2,3)
此处,r
是我的增量(10**-r)
的力量。对于r=1
或r=2
,代码工作正常并以[...,2.0]结束。但对于r=3
或r=4
,它分别以[...,2.001]和[...,2.0001]结束。但是,对于r=5
和r=6
,它会回到2结束。我的代码是否有问题,或者这是某种错误?
答案 0 :(得分:2)
说,要获得2.001的元素,丢失必须采用y = 2.000
那不是真的;例如,y可能会变成1.99999999999997。
您检查y < b
,然后将round(float(y+10**-r),r)
添加到列表中。当然可能第一个是真的,但第二个仍然大于b。
要查看正在发生的事情,请删除舍入内容,并查看列表中倒数第二个数字,如果它出现“错误”。