Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 设置包含小数点和前导零的数字格式_Python_String Formatting_Decimal Point - Fatal编程技术网

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' 从您的示例中的字符串开始,您可以编写一个小函数,如以下所

我想格式化一个小数点和前导零的数字

这个

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


我只需要格式化不超过五位小数的简单数字。此外,使用<代码> %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))