Python 设置包含小数点和前导零的数字格式
我想格式化一个小数点和前导零的数字 这个 考虑所有数字,甚至小数点。python中是否有只考虑整个部分的函数Python 设置包含小数点和前导零的数字格式,python,string-formatting,decimal-point,Python,String Formatting,Decimal Point,我想格式化一个小数点和前导零的数字 这个 考虑所有数字,甚至小数点。python中是否有只考虑整个部分的函数 我只需要格式化不超过五位小数的简单数字。此外,使用 %5F 似乎考虑尾部而不是前导零点。 这就是你要寻找的吗? >>> "%07.1f" % 2.11 '00002.1' 因此,根据你的评论,我可以想出这个(尽管不再那么优雅): 像这样 >>> '%#05.1f' % 3.3 '003.3' 从您的示例中的字符串开始,您可以编写一个小函数,如以下所
我只需要格式化不超过五位小数的简单数字。此外,使用<代码> %5F 似乎考虑尾部而不是前导零点。
这就是你要寻找的吗?
>>> "%07.1f" % 2.11
'00002.1'
因此,根据你的评论,我可以想出这个(尽管不再那么优雅):
像这样
>>> '%#05.1f' % 3.3
'003.3'
从您的示例中的字符串开始,您可以编写一个小函数,如以下所示:
def zpad(val, n):
bits = val.split('.')
return "%s.%s" % (bits[0].zfill(n), bits[1])
>>> zpad('3.3', 5)
'00003.3'
我喜欢新的格式
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将整数转换为浮点数
总共有7个字符,包括3个小数点,即“012.340”您尝试过
%5.1f
了吗?如果是这样的话,那有什么错?它用空格填充字符串,并且仍然考虑小数点和它后面的所有内容。它仍然考虑小数部分,并在第一个小数点后截断任何内容。因此,考虑小数位数的数量,并将其添加到小数位数说明符中。这正是我不想做的,但是如果没有内置的功能,我想它会工作的。谢谢。@3ee3在'3'
上试试这个。如果您想要一个在int
s和float
s上工作的版本,请在return
之前添加一行bits[0]=bits[0]。zfill(n)
,并将return
更改为return bits='。连接(bits)
`那-3.3
呢?不会产生预期的结果!!如果val.count('-')>0:n=n+1,则添加一个条件,那么它也将适用于该条件,并且工作得非常完美!只是对Python3做了一些小的修改。
def zpad(val, n):
bits = val.split('.')
return "%s.%s" % (bits[0].zfill(n), bits[1])
>>> zpad('3.3', 5)
'00003.3'
loop = 2
pause = 2
print 'Begin Loop {0}, {1:06.2f} Seconds Pause'.format(loop, pause)
>>>Begin Loop 2, 0002.1 Seconds Pause
print('{0:07.3f}'.format(12.34))