Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menukar Float64 kepada Rentetan Lebar Tetap dengan Digit Ketara Maksimum dalam Python?

Bagaimana untuk Menukar Float64 kepada Rentetan Lebar Tetap dengan Digit Ketara Maksimum dalam Python?

DDD
DDDasal
2024-12-10 17:34:16633semak imbas

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

Menukar Float64 kepada Rentetan Lebar Tetap dengan Digit Ketara Maksimum

Apabila mencetak nilai float64 dalam jadual lebar tetap, kami sering memerlukan bilangan maksimum digit bererti untuk mengekalkan ketepatan. Pustaka standard tidak mempunyai kaedah yang mudah untuk tujuan ini.

Penentukan Format Tersuai

Untuk mengatasi had ini, kami boleh mencipta penentu format tersuai yang menyesuaikan diri dengan magnitud nilai . Strategi ini melibatkan pemeriksaan nilai untuk menentukan sama ada ia memerlukan notasi saintifik. Jika ia berlaku, kami mengira lebar eksponen dan melaraskan ketepatan pecahan dengan sewajarnya. Jika tidak, kami hanya mendapatkan panjang pecahan dan mengira ketepatan yang diperlukan untuk lebar tetap.

Pelaksanaan Python

Berikut ialah pelaksanaan Python bagi pendekatan yang dicadangkan:

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}"

Contoh Penggunaan

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))

Output

0.0000000000
0.1234567890
1234.5678901
123456789012
1.234568e+12
9405090880.5
9.405091e+19
9.40509e+119

Atas ialah kandungan terperinci Bagaimana untuk Menukar Float64 kepada Rentetan Lebar Tetap dengan Digit Ketara Maksimum dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn