Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.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 - Fatal编程技术网

Python 这个格式化代码是如何工作的?

Python 这个格式化代码是如何工作的?,python,string,Python,String,我总是要知道为什么,而不仅仅是如何,所以我决定: 这是如何工作的: '{0:01.2f}'.format(5.555) #returns '5.55' '{0:01.1f}'.format(5.555) #returns '5.5' '{0:1.2f}'.format(5.555) #returns '5.55' again '{0:1.1f}'.format(5.555) #returns '5.5' again 当我有额外的零时,为什么不通过返回“05.5”而不是仅仅返回

我总是要知道为什么,而不仅仅是如何,所以我决定:

这是如何工作的:

'{0:01.2f}'.format(5.555)  #returns '5.55'

'{0:01.1f}'.format(5.555)  #returns '5.5'

'{0:1.2f}'.format(5.555)   #returns '5.55' again

'{0:1.1f}'.format(5.555)   #returns '5.5' again
当我有额外的零时,为什么不通过返回“05.5”而不是仅仅返回“5.5”来添加零填充呢。这似乎不起作用


另外,为什么字符串是0:1.1f而不是0:0.1f,等等。使用小数点前的数字1而不是零只是一种惯例,还是这就是语法?

这是因为0字符允许零填充,但设置了1的宽度。将宽度设置为2,如“{0:02.1f}”,您将看到一个前导0

编辑-实际上,我不确定2是否足够,因为我不知道小数点后的数字越多,它的行为如何。为了安全起见,将其设置为5,然后看看它会做什么

编辑2-好的,我刚试过。宽度对应于总宽度,包括所有数字和小数点。所以你会得到这个:

>>> '{0:05.2f}'.format(5.555)
'05.55'

请注意,现在字符串的总长度为5,前导为0,因为启用了零填充,并且由于。2,它将截断为小数点后的2位。您应该指定一个宽度,并考虑所有字符,包括小数和点。如果您想要05.55,则为5个字符,因此:

>>>'{0:05.2f}'.format(5.555)
'05.55'
规范如下: