您需要在格式字符串中指定precision 的来源:
precision = 8
n = 7.12345678911
print('{0:.{precision}}'.format(n, precision=precision))
第一次,您使用索引 ({0}) 指定了希望作为数字的参数,因此格式化函数知道从哪里获取参数,但是当您通过某个键指定占位符时,您必须明确指定该键。
混合这两个系统有点不寻常,我建议使用一个:
print('{number:.{precision}}'.format(number=n, precision=precision)) # most readable
print('{0:.{1}}'.format(n, precision))
print('{:.{}}'.format(n, precision)) # automatic indexing, least obvious
值得注意的是,这些精度值将包括点之前的数字,所以
>>> f"{123.45:.3}"
'1.23e+02'
将放弃小数点,只给出数字的前三位。
相反,可以将f 提供给(See the documentation) 格式的类型,以获得带有precision 十进制数字的定点格式。
print('{number:.{precision}f}'.format(number=n, precision=precision)) # most readable
print('{0:.{1}f}'.format(n, precision))
print('{:.{}f}'.format(n, precision)) # automatic indexing, least obvious