Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Membetulkan Isu Pemformatan Mata Wang dengan Mata Wang.Simbol dalam Go?

Bagaimana untuk Membetulkan Isu Pemformatan Mata Wang dengan Mata Wang.Simbol dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-10-24 03:43:30706semak imbas

How to Fix Currency Formatting Issues with Currency.Symbol in Go?

Pemformatan Mata Wang dalam Go dengan Golang.org/x/text/Simbol Mata Wang

Golang.org/x/text/ pakej mata wang menyediakan sokongan yang meluas untuk memformat nilai mata wang. Artikel ini menunjukkan cara memanfaatkan Mata Wang.Simbol untuk mencapai pemformatan yang betul, menangani isu biasa seperti pemisah ribuan yang tidak betul dan peletakan mata.

Isu:

Pengguna menghadapi isu yang output mereka tidak mempunyai beribu-ribu pemisah dan salah memaparkan mata dan bukannya koma untuk pemformatan mata wang.

Masalah Dasar:

Isu ini berpunca daripada kelakuan lalai mata wang.Simbol, yang mengembalikan simbol mata wang tanpa sebarang pemformatan khusus setempat. Akibatnya, titik perpuluhan dan pemisah beribu-ribu tidak digunakan dengan betul.

Penyelesaian 1: Menyimpulkan Format Mata Wang daripada Kod Bahasa

Satu penyelesaian melibatkan membuat kesimpulan format mata wang daripada kod bahasa yang digunakan dalam pakej bahasa. Dengan menetapkan bahasa Pencetak ke tempat yang dikehendaki, output akan diformatkan mengikut konvensyen setempat. Sebagai contoh, untuk Portugis Brazil, output akan diformatkan sebagai "R$ 123.456,78."

<code class="go">package main

import (
    "golang.org/x/text/currency"
    "golang.org/x/text/language"
    "golang.org/x/text/message"
)

func main() {
    unit, _ := currency.ParseISO("BRL")
    const valor = 12345678
    p := message.NewPrinter(language.BrazilianPortuguese)
    formatted := p.Sprint(currency.Symbol(unit.Amount(float64(valor) / 100)))
    println(formatted) // Output: R$ 123.456,78
}</code>

Penyelesaian 2: Menghuraikan Kod Mata Wang ISO dan Menentukan Bahasa

Pendekatan lain ialah menghuraikan kod mata wang ISO dan secara eksplisit menetapkan bahasa untuk pemformatan. Kaedah ini memberikan lebih fleksibiliti dalam menentukan format output yang diingini.

<code class="go">package main

import (
    "golang.org/x/text/currency"
    "golang.org/x/text/language"
    "golang.org/x/text/message"
    "golang.org/x/text/number"
)

func main() {
    unit, _ := currency.ParseISO("BRL")
    const valor = 12345678
    lang := language.Portuguese
    p := message.NewPrinter(lang)
    formatted := p.Sprintf(
        number.Format("%q%v",
            currency.Symbol(unit.Amount(float64(valor) / 100), lang),
            number.Decimal(valor, number.Scale(2)),
        ))
    println(formatted) // Output: R$ 123.456,78
}</code>

Pertimbangan untuk Mata Wang Bertambah Bulat

Untuk mata wang yang dibundarkan secara berperingkat (cth., sebanyak 0.05 atau 0.50), pemprosesan tambahan diperlukan untuk menyediakan pemformat Perpuluhan dengan IncrementString yang sesuai. Ini memastikan bahawa nilai bulat diformatkan dengan sewajarnya.

Kesimpulan

Dengan menggunakan Mata Wang.Simbol bersama-sama dengan percetakan sedar bahasa, pembangun boleh mencapai pemformatan mata wang yang tepat dalam Go , menangani isu biasa pemisah ribuan yang salah dan titik perpuluhan yang salah letak.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Isu Pemformatan Mata Wang dengan Mata Wang.Simbol dalam Go?. 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