我正在阅读wrox Beginning Python一书。在第2章中,示例说明了
>>> print "$.03f" & 30.00123
$30.001
但是,这并不能解释命令的行为。当.3和.003等在shell中具有相同的行为时,为什么要使用.03?此外,它没有解释当我使用3
时会发生什么>>> print "%.03f" % (2.34567891)
2.346
>>> print "%.003f" % (2.34567891)
2.346
>>> print "%.0003f" % (2.34567891)
2.346
>>> print "%.3f" % (2.34567891)
2.346
>>> print "%3f" % (2.34567891)
2.345679
我尝试搜索但无法获得结果,因为我不知道相关的关键字是什么。
答案 0 :(得分:4)
0
中的'%.03f'
无效。这相当于'%.3f'
。
关于第二个问题,'%3f'
做了什么,它只是指定整数的长度,就像在'%3s'
中一样。如果你做得更久就会变得清晰:
>>> '%10f' % 2.3
' 2.300000'
>>> len(_)
10
>>>
答案 1 :(得分:1)
答案 2 :(得分:1)
我认为“%。3f”,“%。03f”和“%0.003f”之间没有任何区别,小数点后的数字由printf-family处理为数字,所以3 == 03 == 003.但是,“%。0f”将截断小数位。此外,“%。f”与“%f”不同。
但是“03”的表示在printf-family中并没有用,如果需要,它会在要打印的数字前面填零,
>>> print "%5d" % (123)
123
>>> print "%05d" % (123)
00123
>>> print "%5d" % (123456)
123456
您示例中的“%3f”与我的“%5d”相同。它打印至少三个数字长的字符串。所以,
>>> print "%3f" % (2.34567891)
2.345679
>>> print "%3.f" % (2.34567891)
2
>>> print "%3.1f" % (2.34567891)
2.3
>>> print "%3.2f" % (2.34567891)
2.35
>>> print "%3.3f" % (2.34567891)
2.346
>>> print "%30f" % (2.34567891)
2.345679
>>> print "%30.8f" % (2.34567891)
2.34567891
>>> print "%30.9f" % (2.34567891)
2.345678910
不要忘记格式字符串中是否省略了小数点,默认小数位为6。