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

Number of digits after decimal point in scientific (e) format

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