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

新手上路,请多包涵

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

这个

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

考虑所有数字,甚至小数点。 python中有只考虑整体的函数吗?

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

原文由 3eee3 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 580
2 个回答

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

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

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

原文由 John Gaines Jr. 发布,翻译遵循 CC BY-SA 3.0 许可协议

那是你要找的吗?

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

原文由 rumpel 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题