Cara Menyelesaikan Isu Pemformatan Mata Wang dalam Go Menggunakan golang.org/x/text/currency

Patricia Arquette
Lepaskan: 2024-10-24 02:18:29
asal
672 orang telah melayarinya

How to Fix Currency Formatting Issues in Go Using golang.org/x/text/currency

Pemformatan Mata Wang dengan golang.org/x/text/currency

Apabila memformat nilai sebagai mata wang dalam Go, golang.org/x /text/pakej mata wang menyediakan penyelesaian yang mudah. Walau bagaimanapun, jika output muncul tanpa koma atau beribu-ribu pemisah, artikel ini meneroka kemungkinan punca dan penyelesaian.

Pemformatan Salah: Mata lwn Koma

Dalam kod yang disediakan , isu ini timbul daripada menggunakan mata wang.Simbol secara langsung dan bukannya menggunakan pemformatan yang lebih komprehensif yang disediakan oleh mesej.NewPrinter. Pendekatan yang betul ialah menggunakan message.NewPrinter untuk mengendalikan pemformatan khusus bahasa yang sesuai:

<code class="go">func (produto *Produto) FormataPreco(valor int64) string {
    unit, _ := currency.ParseISO("BRL")
    p := message.NewPrinter(language.BrazilianPortuguese)
    return p.Sprint(unit.Amount(float64(valor) / 100))
}</code>
Salin selepas log masuk

Sumber Tempatan Sistem

Untuk memformat mata wang menggunakan sumber tempatan sistem, penyelesaiannya memerlukan membuat kesimpulan format daripada kod bahasa. Ini boleh dicapai menggunakan paparan. Tag:

<code class="go">n := display.Tags(language.English)
for _, lcode := range []string{&quot;en_US&quot;, &quot;pt_BR&quot;, &quot;de&quot;, &quot;ja&quot;, &quot;hi&quot;} {
    lang := language.MustParse(lcode)
    cur, _ := currency.FromTag(lang)
    scale, _ := currency.Cash.Rounding(cur) // fractional digits
    dec := number.Decimal(100000.00, number.Scale(scale))
    p := message.NewPrinter(lang)
    p.Printf(&quot;%24v (%v): %v%v\n&quot;, n.Name(lang), cur, currency.Symbol(cur), dec)
}</code>
Salin selepas log masuk

Sebagai alternatif, kod mata wang ISO boleh dihuraikan, tetapi bahasa output mesti ditentukan secara berasingan:

<code class="go">for _, iso := range []string{&quot;USD&quot;, &quot;BRL&quot;, &quot;EUR&quot;, &quot;JPY&quot;, &quot;INR&quot;} {
    cur := currency.MustParseISO(iso)
    scale, _ := currency.Cash.Rounding(cur) // fractional digits
    dec := number.Decimal(100000.00, number.Scale(scale))
    p := message.NewPrinter(language.English)
    p.Printf(&quot;%v: %v%v\n&quot;, cur, currency.Symbol(cur), dec)
}</code>
Salin selepas log masuk

Keperluan Pembundaran

Mata wang tertentu memerlukan pembundaran dalam kenaikan (cth., 0.05 atau 0.50). Untuk menampung ini, pemprosesan tambahan diperlukan untuk menyediakan IncrementString yang betul kepada pemformat Perpuluhan:

<code class="go">scale, incCents := currency.Cash.Rounding(cur) // fractional digits
incFloat := math.Pow10(-scale) * float64(incCents)
incFmt := strconv.FormatFloat(incFloat, 'f', scale, 64)
dec := number.Decimal(100000.26,
    number.Scale(scale), number.IncrementString(incFmt))
p.Printf(&quot;%24v %v, %4s-rounding: %3v%v\n&quot;,
    n.Name(lang), cur, incFmt, currency.Symbol(cur), dec)</code>
Salin selepas log masuk

Dengan menggunakan pendekatan ini, adalah mungkin untuk memformat nilai mata wang dalam Go menggunakan golang.org/x/text/ mata wang sambil memastikan penyetempatan dan pemformatan yang betul berdasarkan sumber tempat sistem atau kod mata wang ISO.

Atas ialah kandungan terperinci Cara Menyelesaikan Isu Pemformatan Mata Wang dalam Go Menggunakan golang.org/x/text/currency. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!