关于python:格式化包含带前导零的小数点的数字

Format a number containing a decimal point with leading zeroes

我想用带前导零的小数点来格式化一个数字。

这个

1
2
>>> '3.3'.zfill(5)
003.3

考虑所有的数字,甚至小数点。python中是否有只考虑整个部分的函数?

我只需要格式化不超过5位小数的简单数字。此外,使用%5f似乎考虑了尾随而不是前导零。


这就是你要找的吗?

1
2
>>>"%07.1f" % 2.11
'00002.1'

所以根据你的评论,我可以想出这个(尽管不再那么优雅了):

1
2
3
4
5
>>> fmt = lambda x :"%04d" % x + str(x%1)[1:]
>>> fmt(3.1)
0003.1
>>> fmt(3.158)
0003.158


我喜欢新的格式。

1
2
3
4
loop = 2
pause = 2
print 'Begin Loop {0}, {1:06.2f} Seconds Pause'.format(loop, pause)
>>>Begin Loop 2, 0002.1 Seconds Pause

在1:06.2f:

  • 1是用于可变暂停的位置固定器
  • 0表示用前导零填充
  • 6包括小数点在内的字符总数
  • 2精度
  • F将整数转换为浮点数


像您的示例一样,从一个字符串开始,您可以编写一个像这样的小函数来执行您想要的操作:

1
2
3
4
5
6
def zpad(val, n):
    bits = val.split('.')
    return"%s.%s" % (bits[0].zfill(n), bits[1])

>>> zpad('3.3', 5)
'00003.3'


这样地?

1
2
>>> '%#05.1f' % 3.3
'003.3'