Skip to main content
 首页 » 编程设计

python之如何为新的 python 格式选项设置可变精度

2025年05月04日11zengkefu

我喜欢包含变量的字符串的新格式选项,但我希望有一个变量可以在我的脚本中设置精度,但我不确定该怎么做。举个小例子:

a = 1.23456789 
out_str = 'a = {0:.3f}'.format(a) 
print(out_str) 

现在这是我想用伪代码做的:

a = 1.23456789 
some_precision = 5 
out_str = 'a = {0:.(some_precision)f}'.format(a) 
print(out_str) 

但我不确定,是否可能,以及是否可能是语法的样子。

请您参考如下方法:

您可以嵌套占位符,其中嵌套的占位符可以在格式规范中的任何地方使用:

out_str = 'a = {0:.{some_precision}f}'.format(a, some_precision=some_precision) 

我在那里使用了一个命名的占位符,但你也可以使用编号的插槽:

out_str = 'a = {0:.{1}f}'.format(a, some_precision) 

也支持嵌套插槽的自动编号(Python 2.7 及更高版本);编号仍然从左到右:

out_str = 'a = {0:.{}f}'.format(a, some_precision) 

首先填充嵌套槽;当前的实现允许您最多嵌套 2 层占位符,因此在占位符中的占位符中使用占位符不起作用:

>>> '{:.{}f}'.format(1.234, 2) 
'1.23' 
>>> '{:.{:{}}f}'.format(1.234, 2, 'd') 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
ValueError: Max string recursion exceeded 

您也不能在字段名称中使用占位符(因此不能动态分配值到槽)。