繁体   English   中英

如何在 python 中动态格式化浮点数的字符串表示形式?

[英]How to dynamically format string representation of float number in python?

您好我想动态调整浮点数的字符串表示的显示小数位,但我找不到任何有关如何执行此操作的信息。

例如:

precision = 8

n = 7.12345678911

str_n = '{0:.{precision}}'.format(n)

print(str_n)应该显示 -> 7.12345678

但相反,我得到了一个“KeyError”。 我错过了什么?

您需要指定格式字符串中的precision来自何处:

precision = 8
n = 7.12345678911
print('{0:.{precision}}'.format(n, precision=precision))

第一次,您使用索引 ( {0} ) 指定您希望哪个参数成为数字,因此格式 function 知道从哪里获取参数,但是当您通过某个键指定占位符时,您必须明确指定该键。

混合这两个系统有点不寻常,我建议使用一个:

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提供给格式的类型(请参阅文档)以获取具有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

除了@Talon 之外,对于那些对 f-strings 感兴趣的人,这也适用。

precision = 8
n = 7.12345678911

print(f'{n:.{precision}f}')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM