首頁 > 後端開發 > Golang > 如何在 Golang 中處理貨幣格式?

如何在 Golang 中處理貨幣格式?

Barbara Streisand
發布: 2024-10-24 03:22:02
原創
175 人瀏覽過

How to Handle Currency Formatting in Golang?

Golang 中正確的貨幣格式

在使用貨幣格式時,必須考慮每種貨幣和語言組合的具體要求。使用 golang.org/x/text/currency,您可以根據本機約定輕鬆格式化值。但是,您在獲得所需的輸出時可能會遇到一些挑戰。

使用貨幣符號

在您的程式碼中,您使用currency.Symbol 來擷取貨幣符號指定的 ISO 代碼。但是,在不提供語言上下文的情況下使用此方法時,您可能無法獲得預期的分隔符號或數字格式。

合併本機格式

而不是嘗試手動建立您可以利用顯示和訊息包根據語言和區域自動檢索適當的格式。以下是範例:

<code class="go">import (
    "fmt"

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

func formatCurrency(value int64, currencyCode string, languageCode string) string {
    lang, _ := language.Parse(languageCode)
    p := message.NewPrinter(lang)

    unit, _ := currency.ParseISO(currencyCode)
    return p.Sprintf("%v%v", currency.Symbol(unit), float64(value))
}</code>
登入後複製

此函數接受值、貨幣代碼和語言代碼,並傳回格式正確的貨幣字串。

處理增量單位

某些貨幣有固定的增加單位,例如 5 或 10 美分。為了解決這個問題,您可以使用number 套件來指定增量:

<code class="go">import (
    "golang.org/x/text/currency"
    "golang.org/x/text/number"
)

func formatWithIncrement(value int64, currencyCode string, increment int) string {
    unit, _ := currency.ParseISO(currencyCode)
    scale, inc := currency.Cash.Rounding(unit)
    dec := number.Decimal(float64(value), number.Scale(scale), number.IncrementString(fmt.Sprintf("%.2f", float64(inc))))
    return fmt.Sprintf("%v%v", currency.Symbol(unit), dec)
}</code>
登入後複製

透過提供語言上下文,從語言代碼推斷貨幣格式,並考慮增量單位,您可以創建靈活且準確的增量使用golang.org/x/text/currency 的Golang 貨幣格式化解決方案。

以上是如何在 Golang 中處理貨幣格式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板