36

我想填充一些百分比值,以便小数点前总是有 3 个单位。使用整数我可以使用 '%03d' - 是否有等效的浮点数?

'%.3f' 适用于小数点后,但 '%03f' 什么也不做。

4

4 回答 4

49

'%03.1f' 有效(1 可以是任何数字或空字符串):

>>> "%06.2f"%3.3
'003.30'

>>> "%04.f"%3.2
'0003'

请注意,字段宽度包括小数位和小数位。

于 2009-09-15T01:18:13.323 回答
19

或者,如果您想使用.format

              {:6.1f}
                ↑ ↑ 
                | |
# digits to pad | | # of decimal places to display

复制粘贴:{:6.1f}

上面的 6 包括小数点左边的数字、小数点标记和小数点右边的数字。

使用示例:

'{:6.2f}'.format(4.3)
Out[1]: '  4.30'

f'{4.3:06.2f}'
Out[2]: '004.30'

'{:06.2f}'.format(4.3)
Out[3]: '004.30'
于 2017-01-01T01:31:10.937 回答
9

您也可以使用 zfill。

str(3.3).zfill(5)
'003.3'
于 2009-09-15T01:21:24.817 回答
2

一个简短的例子:

var3= 123.45678
print(
    f'rounded1    \t {var3:.1f} \n' 
    f'rounded2    \t {var3:.2f} \n' 
    f'zero_pad1   \t {var3:06.1f} \n'  #<-- important line
    f'zero_pad2   \t {var3:07.1f}\n'   #<-- important line
    f'scientific1 \t {var3:.1e}\n'
    f'scientific2 \t {var3:.2e}\n'
)

给出输出

rounded1         123.5 
rounded2         123.46 
zero_pad1        0123.5 
zero_pad2        00123.5
scientific1      1.2e+02
scientific2      1.23e+02
于 2019-06-16T16:12:56.103 回答