Golang での適切な通貨書式設定
通貨書式設定を使用する場合は、通貨と言語の組み合わせごとに特定の要件を考慮することが重要です。 golang.org/x/text/currency を使用すると、ローカルの規則に基づいて値を簡単にフォーマットできます。ただし、目的の出力を取得する際にいくつかの課題が発生する可能性があります。
通貨記号の使用
コードでは、currency.Symbol を使用して通貨記号を取得します。指定された ISO コード。ただし、言語コンテキストを指定せずにこの方法を使用すると、予期した区切り記号や数値書式設定が得られない可能性があります。
ローカル形式の組み込み
手動で作成しようとする代わりにフォーマットに応じて、表示パッケージとメッセージ パッケージを利用して、言語と地域に基づいて適切なフォーマットを自動的に取得できます。以下に例を示します:
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))
}
この関数は、値、通貨コード、および言語コードを受け取り、適切にフォーマットされた通貨文字列を返します。
増分単位の処理
一部通貨には、5 セントや 10 セントなどの固定増分単位があります。これを考慮するには、number パッケージを使用して増分を指定できます。
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)
}
言語コンテキストを提供し、言語コードから通貨形式を推測し、増分単位を考慮することで、golang.org/x/text/currency を使用して Golang で柔軟かつ正確な通貨形式ソリューションを作成できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3