打印浮点数

时间:2016-09-14 05:14:16

标签: python

我正在尝试打印一些东西:

>>> print "%02i,%02i,%02g" % (3, 4, 5.66)
03,04,5.66

但这不正确。如果你注意到,零被正确预先填写 到所有整数浮点(前两个数字)。我需要它,如果小数点左边有一个数字,将有一个前导零。

即。上面的解决方案应该返回:

03,04,05.66

我做错了什么?

3 个答案:

答案 0 :(得分:7)

对于g,请指定宽度和精度:

>>> print "%02i,%02i,%05.3g" % (3, 4, 5.66)
03,04,05.66

f与g

此处说明了fg之间的差异:

>>> 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