首頁 >後端開發 >Golang >如何在 Python 中將 Float64 轉換為具有最大有效位數的固定寬度字串?

如何在 Python 中將 Float64 轉換為具有最大有效位數的固定寬度字串?

DDD
DDD原創
2024-12-10 17:34:16644瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn