golang.org/x/text/currency의 Current.Symbol을 사용하여 Go에서 통화 형식 지정
golang.org/x/text/ 통화 패키지는 통화 값 형식 지정에 대한 광범위한 지원을 제공합니다. 이 문서에서는 Cash.Symbol을 활용하여 올바른 형식을 지정하고 잘못된 천 단위 구분 기호 및 점 배치와 같은 일반적인 문제를 해결하는 방법을 보여줍니다.
문제:
사용자에게 발생하는 문제 출력에는 수천 개의 구분 기호가 없으며 통화 형식 지정 시 쉼표 대신 점이 잘못 표시됩니다.
기본 문제:
이 문제는 통화의 기본 동작에서 비롯됩니다. 로케일별 형식 없이 통화 기호를 반환합니다. 결과적으로 소수점 및 천 단위 구분 기호가 올바르게 적용되지 않습니다.
해결책 1: 언어 코드에서 통화 형식 유추
한 가지 해결 방법은 언어 코드에서 통화 형식을 유추하는 것입니다. 언어 패키지에 사용되는 언어 코드입니다. 프린터의 언어를 원하는 로케일로 설정하면 해당 로케일의 규칙에 따라 출력 형식이 지정됩니다. 예를 들어 브라질 포르투갈어의 경우 출력 형식은 "R$ 123.456,78"입니다.
<code class="go">package main import ( "golang.org/x/text/currency" "golang.org/x/text/language" "golang.org/x/text/message" ) func main() { unit, _ := currency.ParseISO("BRL") const valor = 12345678 p := message.NewPrinter(language.BrazilianPortuguese) formatted := p.Sprint(currency.Symbol(unit.Amount(float64(valor) / 100))) println(formatted) // Output: R$ 123.456,78 }</code>
해결책 2: ISO 통화 코드 구문 분석 및 언어 지정
또 다른 접근 방식은 ISO 통화 코드를 구문 분석하고 형식 지정을 위한 언어를 명시적으로 설정하는 것입니다. 이 방법은 원하는 출력 형식을 지정하는 데 더 많은 유연성을 제공합니다.
<code class="go">package main import ( "golang.org/x/text/currency" "golang.org/x/text/language" "golang.org/x/text/message" "golang.org/x/text/number" ) func main() { unit, _ := currency.ParseISO("BRL") const valor = 12345678 lang := language.Portuguese p := message.NewPrinter(lang) formatted := p.Sprintf( number.Format("%q%v", currency.Symbol(unit.Amount(float64(valor) / 100), lang), number.Decimal(valor, number.Scale(2)), )) println(formatted) // Output: R$ 123.456,78 }</code>
점증적으로 반올림되는 통화에 대한 고려 사항
증분적으로 반올림되는 통화의 경우(예: 0.05 또는 0.50), Decimal 포맷터에 적절한 IncrementString을 제공하려면 추가 처리가 필요합니다. 이렇게 하면 반올림된 값의 형식이 적절하게 지정됩니다.
결론
Currency.Symbol을 언어 인식 인쇄와 함께 활용하면 개발자는 Go에서 정확한 통화 형식을 지정할 수 있습니다. , 잘못된 천 단위 구분 기호 및 잘못된 소수점 위치와 관련된 일반적인 문제를 해결합니다.
위 내용은 Go에서 Money.Symbol의 통화 형식 문제를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!