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
Lepaskan: 2024-12-10 17:34:16
asal
659 orang telah melayarinya

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}"
Salin selepas log masuk

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))
Salin selepas log masuk

Output

0.0000000000
0.1234567890
1234.5678901
123456789012
1.234568e+12
9405090880.5
9.405091e+19
9.40509e+119
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan