Float64 を有効桁数が最大の固定幅文字列に変換する
固定幅テーブルに float64 値を出力する場合、多くの場合、精度を維持するための有効桁数の最大値。標準ライブラリには、この目的に適した便利なメソッドがありません。
カスタマイズされた書式指定子
この制限を克服するには、値の大きさに適応するカスタマイズされた書式指定子を作成できます。 。この戦略には、値を調べて科学的表記が必要かどうかを判断することが含まれます。そうであれば、指数の幅を計算し、それに応じて分数の精度を調整します。そうでない場合は、分数の長さを取得し、固定幅に必要な精度を計算します。
Python の実装
提案されたアプローチの Python 実装は次のとおりです。
import math def format_float(value, width): """ Converts a float to a fixed-width string with maximum significant digits. Args: value: The float value to format. width: The fixed width of the string. Returns: A fixed-width string containing the formatted value. """ if abs(value) >= 1e12: # Scientific notation exponent = int(math.log10(abs(value))) fraction_width = width - len(str(exponent)) - 2 return f"{value:.{fraction_width}g}" else: # Regular form fraction_length = len(str(int(value))) precision = width - fraction_length - 1 return f"{value:.{precision}f}"
例使用法
values = [0, 1234.567890123, 0.1234567890123, 123456789012.0, 1234567890123.0, 9.405090880450127e9, 9.405090880450127e19, 9.405090880450127e119] for value in values: print(format_float(value, 12))
出力
0.0000000000 0.1234567890 1234.5678901 123456789012 1.234568e+12 9405090880.5 9.405091e+19 9.40509e+119
以上がPython で Float64 を有効桁数が最大の固定幅文字列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。