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

3

Python 2.7.5+

新风格的'{X.Yf}'格式化方法似乎与旧风格的'%X.Yf'格式化方法不同。有人能解释一下吗?

>>> '%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位数字。我是否犯了一些愚蠢的错误?
1个回答

6
请在新格式中使用f:
>>> '{num:8.3f}'.format(num=1.98567)
'   1.986'

没有指定格式类型时,默认为g,精度被解释为“总共”的数字个数(不包括小数点前的0)。在小数点前加上1,只显示小数点后面的两位数字。
如果使用g而不是f,则可以看到与旧字符串格式化相同的输出结果。
>>> '%8.3g' % (1.98567)
'    1.99'

这个术语的意思是有效数字。 - Jack Aidley
1
@JackAidley 谢谢!我一直坚持使用格式文档中使用的术语。 - Martijn Pieters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接