科学 (e) 格式的小数点后位数

问题描述

我想获得所需的小数点后位数,同时保持科学格式的答案(例如 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
>>>