Hi我想动态调整浮点数字的字符串表示的小数位数,但我找不到任何关于如何做到这一点的信息。
例如:
precision = 8
n = 7.12345678911
str_n = '{0:.{precision}}'.format(n)
print(str_n)
应显示->7.12345678
但是我得到了一个"KeyError"。我错过了什么?
除了@Talon,对于那些对f字符串感兴趣的人来说,这也很有效。
precision = 8
n = 7.12345678911
print(f'{n:.{precision}f}')
您需要指定格式字符串中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'
将对小数进行drop drop,并且只给出数字的前三位数字。相反,f
可以提供给格式类型(请参阅文档(,以获得具有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