golang.org/x/text/currency를 사용한 통화 형식 지정
Go에서 값을 통화 형식으로 지정할 때 golang.org/x /text/currency 패키지는 편리한 솔루션을 제공합니다. 그러나 출력이 쉼표나 천 단위 구분 기호 없이 나타나는 경우 이 문서에서는 잠재적인 원인과 해결 방법을 살펴봅니다.
잘못된 형식: 점 대 쉼표
제공된 코드에서 , message.NewPrinter에서 제공하는 보다 포괄적인 형식을 사용하는 대신 통화.Symbol을 직접 사용하면 문제가 발생합니다. 올바른 접근 방식은 message.NewPrinter를 사용하여 적절한 언어별 형식을 처리하는 것입니다.
<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>
시스템 로캘 리소스
시스템 로캘 리소스를 사용하여 통화 형식을 지정하려면, 솔루션을 사용하려면 언어 코드에서 형식을 유추해야 합니다. 이는 디스플레이를 사용하여 달성할 수 있습니다.
<code class="go">n := display.Tags(language.English) for _, lcode := range []string{"en_US", "pt_BR", "de", "ja", "hi"} { 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("%24v (%v): %v%v\n", n.Name(lang), cur, currency.Symbol(cur), dec) }</code>
또는 ISO 통화 코드를 구문 분석할 수 있지만 출력 언어를 별도로 지정해야 합니다.
<code class="go">for _, iso := range []string{"USD", "BRL", "EUR", "JPY", "INR"} { 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("%v: %v%v\n", cur, currency.Symbol(cur), dec) }</code>
반올림 요구 사항
특정 통화의 경우 반올림이 필요합니다(예: 0.05 또는 0.50). 이를 수용하려면 올바른 IncrementString을 Decimal 포맷터에 제공하기 위한 추가 처리가 필요합니다.
<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("%24v %v, %4s-rounding: %3v%v\n", n.Name(lang), cur, incFmt, currency.Symbol(cur), dec)</code>
이러한 접근 방식을 활용하면 golang.org/x/text/를 사용하여 Go에서 통화 값의 형식을 지정할 수 있습니다. 시스템 로캘 리소스 또는 ISO 통화 코드를 기반으로 올바른 현지화 및 형식을 보장하면서 통화를 사용하세요.
위 내용은 golang.org/x/text/currency를 사용하여 Go에서 통화 형식 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!