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

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

Linda Hamilton
Lepaskan: 2024-12-05 15:46:10
asal
844 orang telah melayarinya

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

Menukar Float64 kepada Rentetan dengan Lebar Tetap dan Digit Ketara Maksimum

Apabila membentangkan nombor titik terapung dalam jadual lebar tetap, kebimbangan timbul mengenai pemeliharaan digit bererti. Fungsi fmt.Printf standard menawarkan kawalan terhad ke atas aspek ini.

Penyelesaian: Pemformatan Tersuai

Untuk menangani isu ini, kami boleh melaksanakan fungsi pemformatan tersuai yang menentukan bilangan optimum digit bererti kepada muat dalam lebar yang ditentukan. Ini melibatkan menganalisis nombor yang dipersoalkan dan memilih antara notasi saintifik dan bentuk biasa berdasarkannya magnitud.

Pelaksanaan:

// format12 formats x to be 12 chars long.
func format12(x float64) string {
    if x >= 1e12 {
        // For scientific notation, determine the width of the exponent.
        s := fmt.Sprintf("%.g", x)
        format := fmt.Sprintf("%%12.%dg", 12-len(s))
        return fmt.Sprintf(format, x)
    }

    // For regular form, determine the width of the fraction.
    s := fmt.Sprintf("%.0f", x)
    if len(s) == 12 {
        return s
    }
    format := fmt.Sprintf("%%%d.%df", len(s), 12-len(s)-1)
    return fmt.Sprintf(format, x)
}
Salin selepas log masuk

Ujian:

fs := []float64{0, 1234.567890123, 0.1234567890123, 123456789012.0, 1234567890123.0,
    9.405090880450127e+9, 9.405090880450127e+19, 9.405090880450127e+119}

for _, f := range fs {
    fmt.Println(format12(f))
}
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 Go?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan