格式化包含带前导零的小数点的数字

时间:2011-09-13 20:03:41

标签: python string-formatting decimal-point

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

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

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

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

5 个答案:

答案 0 :(得分:22)

这就是你要找的吗?

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

所以根据你的评论,我可以拿出这个(虽然不再那么优雅):

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

答案 1 :(得分:9)

我喜欢新格式化。

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将整数转换为浮点数

答案 2 :(得分:2)

喜欢这个吗?

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

答案 3 :(得分:2)

从一个字符串开始,你可以编写一个像这样的小函数来做你想做的事情:

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

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

答案 4 :(得分:0)

print('{0:07.3f}'.format(12.34))

这将总共有7个字符,其中包括3个小数点。 “ 012.340”