Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_Python 2.7_String Formatting - Fatal编程技术网

新的Python打印格式语句返回不同的结果。为什么?

新的Python打印格式语句返回不同的结果。为什么?,python,string,python-2.7,string-formatting,Python,String,Python 2.7,String Formatting,Python 2.7.5+ 新样式“{X.Yf}”。格式(num)的行为似乎与旧样式“%X.Yf%”(num)不同。有人能解释一下吗 >>> '%8.3f' % (0.98567) ' 0.986' >>> '%8.3f' % (1.98567) ' 1.986' >>> '{num:8.3}'.format(num=0.98567) ' 0.986' >>> '{num:8.3}'.format(num=1.

Python 2.7.5+

新样式“{X.Yf}”。格式(num)的行为似乎与旧样式“%X.Yf%”(num)不同。有人能解释一下吗

>>> '%8.3f' % (0.98567)
'   0.986'
>>> '%8.3f' % (1.98567)
'   1.986'

>>> '{num:8.3}'.format(num=0.98567)
'   0.986'
>>> '{num:8.3}'.format(num=1.98567)
'    1.99'

请注意,旧样式在小数点后显示3位数字,而新样式有时打印2位,有时打印3位。我犯了一些愚蠢的错误吗?

也使用新格式的
f

>>> '{num:8.3f}'.format(num=1.98567)
'   1.986'
如果没有格式类型,默认值为
g
,精度被解释为总位数(不计算小数点前的0)。如果在declimal point之前有一个
1
,则在它之后只显示两位数字

如果使用
g
而不是
f
,您将看到与旧字符串格式相同的输出:

>>> '%8.3g' % (1.98567)
'    1.99'

“这是一个有意义的数字。”杰凯德利,谢谢!我一直坚持使用的术语。