新的Python打印格式语句为何返回不同结果?
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 个回答
6
在新的格式中也可以使用 f
:
>>> '{num:8.3f}'.format(num=1.98567)
' 1.986'
如果不指定格式类型,默认使用 g
,而精度则被理解为数字的 总 位数(不包括小数点前的0)。如果小数点前有一个 1
,那么小数点后只会显示2位数字。
如果你在旧的字符串格式中使用 g
而不是 f
,你会看到相同的输出:
>>> '%8.3g' % (1.98567)
' 1.99'