格式化带小数点的数字,前面加零
我想把一个带小数点的数字格式化,并在前面加上零。
这个
>>> '3.3'.zfill(5)
003.3
考虑了所有的数字,甚至包括小数点。有没有什么函数可以在Python中只考虑整数部分呢?
我只需要格式化简单的数字,最多保留五位小数。而且,使用 %5f
似乎是考虑后面的零,而不是前面的零。
6 个回答
18
我喜欢这种新的格式化风格。
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 是一个占位符,用来表示变量 pause 的值
- 0 表示在前面补零
- 6 是总字符数,包括小数点
- 2 是小数点后的位数
- f 是把整数转换成浮点数的意思
30
这就是你想要的东西吗?
>>> "%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
3
从一个字符串开始,你可以写一个小函数来实现你想要的功能,像这样:
def zpad(val, n):
bits = val.split('.')
return "%s.%s" % (bits[0].zfill(n), bits[1])
>>> zpad('3.3', 5)
'00003.3'