ホームページ  >  記事  >  バックエンド開発  >  Golang で通貨の書式設定を処理するにはどうすればよいですか?

Golang で通貨の書式設定を処理するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-24 03:22:02115ブラウズ

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 セントなどの固定増分単位があります。これを考慮して、数値パッケージを使用して増分を指定できます。

<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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。