问题描述
我想获得所需的小数点后位数,同时保持科学格式的答案(例如 2.989e+10)。我知道方法格式: "{:0.Ae}".format(given_number) 其中 A 是小数点后的位数。但是,我通过变量获取小数点 (A) 后的位数。 有人可以帮助我如何实施它以获得所需的结果? 我的代码:将 A 视为小数点后的位数。
for val in [1.049666666666667e-08,4.248944444444444e+05]:
val_log = math.log10(val);
val_e = round(val_log - (0.5 if val_log<0 else 0));
A = abs(val_e +3);
valstr = "{:0.Ae}".format(val)
print(valstr)
基本上是小数点后的位数(A) = |3 + e| 后的值。我应该如何在 {:0.xe}.format(val) 中使用 A 的值?
解决方法
您可以在精度字段中嵌套变量,如 formatted string literals 的文档在带有注释“嵌套字段”的示例中指出的那样。
下面是一个更简化的例子,将精度限制为 3 位(或小数点后 2 位):
>>> f = 123.12345
>>> n = 3
>>> print(f'{f:.{n}}')
1.23e+02
>>>