我的L1数组包含0.029999999999999999之类的数字,我想将其打印为0.03
我的代码有效,但最后会出错,因为最后一次计数超出了范围。我明白为什么它会破裂,但不知道如何解决它。感谢
count = 1
while L1:
print "%.2f" %L1[count]
count = count + 1
答案 0 :(得分:9)
如果要打印L1
中的所有数字,请使用:
for x in L1: print '%.2f' % x
如果您想跳过第一个,for x in L1[1:]:
将有效。
编辑:OP在评论(!)中提到他们的愿望实际上是“创建一个新阵列”(我想他们实际上是指“新列表”,而不是{{1但是,那不会是非常不同的)。浮动世界中没有“舍入数字” - 你可以使用array.array
,但这仍然会给你一个浮动,所以它不一定有“正好2位数”。无论如何,对于字符串列表:
round(x, 2)
或带有十进制数字的那个(如果你愿意,可以正好有两位数字):
newlistofstrings = ['%.2f' % x for x in L1]
答案 1 :(得分:2)
为什么不循环遍历L1
列表而不是进行while循环?
for i in L1:
print "%.2f" % i
保持简单:)
答案 2 :(得分:0)
L2=["%.2f" %i for i in L1]
答案 3 :(得分:0)
2个问题:
更好的是,就像其他人说的那样:
for i in L1:
print "%.2f" % i
如果你还需要索引(count):
for (index, item) in enumerate(L1):
print "Element number (0-based) %d is %f" % (index, item)
另请参阅Pythonic expressions了解一些使用python的更好方法。