ホームページ > バックエンド開発 > Golang > Python で Float64 を有効桁数が最大の固定幅文字列に変換する方法

Python で Float64 を有効桁数が最大の固定幅文字列に変換する方法

DDD
リリース: 2024-12-10 17:34:16
オリジナル
678 人が閲覧しました

How to Convert a Float64 to a Fixed-Width String with Maximum Significant Digits in Python?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート