%フォーマットを使用してロギングの変数から浮動小数点精度を指定するにはどうすればよいですか?

1
2022.01.14

ログ記録で f 文字列の熱心な評価を避けたいので、%フォーマットを使用します。

精度は変数 precisionによって定義されます。

import logging
value = 3.14159
logging.error("%.2f", value)

precision = 2

logging.error(f"{value:.{precision}f}") # OK but eager evaluation
logging.error("%.*f", value, precision) # fails
logging.error("%.%if", value, precision) # fails

任意の提案?

回答
4
2022.01.14
logging.error("%.*f", value, precision) # fails

ほぼ正しいですが、精度が 最初に来る必要があります:

logging.error("%.*f", precision, value) # works

ニーモニック: 精度のプレースホルダ*は、float値のプレースホルダfの前に来るので、精度はfloatの前に提供されます。