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

时间:2014-06-28 21:58:43

标签: python string python-2.7 string-formatting

Python 2.7.5 +

新风格' {X.Yf}' .format(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.我是否犯了一些愚蠢的错误?

1 个答案:

答案 0 :(得分:6)

也以新格式使用f

>>> '{num:8.3f}'.format(num=1.98567)
'   1.986'

没有格式类型,默认值为g,精度被解释为位数(不包括小数点前的0)。在declimal点之前有一个1,后面只显示2位数。

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

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