我正在尝试打印一些东西:
>>> print "%02i,%02i,%02g" % (3, 4, 5.66)
03,04,5.66
但这不正确。如果你注意到,零被正确预先填写 到所有整数浮点(前两个数字)。我需要它,如果小数点左边有一个数字,将有一个前导零。
即。上面的解决方案应该返回:
03,04,05.66
我做错了什么?
答案 0 :(得分:7)
对于g
,请指定宽度和精度:
>>> print "%02i,%02i,%05.3g" % (3, 4, 5.66)
03,04,05.66
此处说明了f
和g
之间的差异:
>>> print "%07.1f, %07.1f, %07.1f" % (1.23, 4567.8, 9012345678.2)
00001.2, 04567.8, 9012345678.2
>>> print "%07.1g, %07.1g, %07.1g" % (1.23, 4567.8, 9012345678.2)
0000001, 005e+03, 009e+09
当给出大数字时,g
会切换到科学记数法,而f
只会使用更多空格。
同样地,g
在需要时切换为科学记数法,用于小数字:
>>> print "%07.1f, %07.1f, %07.1f" % (.01, .0001, .000001)
00000.0, 00000.0, 00000.0
>>> print "%07.1g, %07.1g, %07.1g" % (.01, .0001, .000001)
0000.01, 00.0001, 001e-06
答案 1 :(得分:4)
使用不同的格式,即f
:
print "%02i,%02i,%05.2f" % (3, 4, 5.66)
^^^^^^
或g
:
print "%02i,%02i,%05.3g" % (3, 4, 5.66)
^^^^^^
但我会坚持f
。我想这就是你在这里尝试做的事情(g
有时可以使用十进制格式)。更多信息:formatting strings with %
'f' Floating point decimal format.
'g' Floating point format. Uses lowercase exponential format if exponent is less than -4 or not less than precision, decimal format otherwise.
答案 2 :(得分:4)
格式%02g
指定最小宽度为2.您可以使用%0m.n
语法,其中m
是最小宽度,n
是小数位数。你需要的是:
>>> print "%02i,%02i,%05.2f" % (3, 4, 5.66)
03,04,05.66