我想在 python 中使用 while 循环创建简单列表 [0, 0.05, 0.10, 0.15,.....,1.00]
Posted
技术标签:
【中文标题】我想在 python 中使用 while 循环创建简单列表 [0, 0.05, 0.10, 0.15,.....,1.00]【英文标题】:I want to create simple list [0, 0.05, 0.10, 0.15,.....,1.00] using while loop in python 【发布时间】:2019-10-18 18:51:53 【问题描述】:我想在 python 中创建一个 while 循环,它将输出作为列表 [0.00, 0.05, 0.10, 0.15,...., 1.00]
我尝试了以下方法:
alpha=0
alphalist=list()
while alpha<=1:
alphalist.append(alpha)
alpha+=0.05
print(alphalist)
我得到的输出为[0,0.05,0.1 0.15000000000000002,0.2%,0.25%,0.3%0.35,0.39999999999999997,0.44999999999999996,0.49999999999999994,0.5499999999999999,0.6%,0.65,0.7000000000000001,0.7500000000000001,0.8000000000000002,0.8500000000000002,0.9000000000000002,0.9500000000000003]
但我想要的是:[0.00, 0.05, 0.10, 0.15,...., 1.00]
【问题讨论】:
相关:***.com/questions/588004/… 相关:How to use a decimal range() step value? - 见this answer 【参考方案1】:这是浮点错误的结果。 0.05
并不是真正的有理数 1/20
,因此任何涉及它的算术都可能与您的预期不同。
将两个整数相除,而不是从浮点值开始,有助于缓解问题。
>>> [x/100 for x in range(0, 101, 15)]
[0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0]
【讨论】:
【参考方案2】:有些数字可能会导致 floating number system computers use 不精确。你只是看到了一个例子。
如果您想以这种方式继续使用 while 循环,我会做的是添加另一行
alpha = round(alpha,2)
【讨论】:
以上是关于我想在 python 中使用 while 循环创建简单列表 [0, 0.05, 0.10, 0.15,.....,1.00]的主要内容,如果未能解决你的问题,请参考以下文章