要在Go中打印一个带有千位分隔符的数字,你可以使用 Printer对象,该对象来自官方的 golang.org/x/text/message包中的对象。它的工作是将文本字符串从一种语言翻译成另一种语言,它也允许你以特定语言的格式打印数字。
更具体地说,该
message.Printer对象允许使用Unicode CLDR对数字进行格式化。
package main
import (
"fmt"
"golang.org/x/text/language"
"golang.org/x/text/message"
)
func main() {
number := 1_000_000.23456
p := message.NewPrinter(language.English)
withCommaThousandSep := p.Sprintf("%f", number)
fmt.Println(withCommaThousandSep)
}
输出
1,000,000.234560
在标准的英文格式中,逗号是千位数分隔符,点是小数点分隔符。然而,你可以用任何语言格式来表达数字。
package main
import (
"fmt"
"golang.org/x/text/language"
"golang.org/x/text/message"
)
func main() {
number := 1_000_000.23456
langs := []language.Tag{
language.German,
language.Ukrainian,
language.Chinese,
language.Arabic,
language.French,
}
for _, l := range langs {
p := message.NewPrinter(l)
withCommaThousandSep := p.Sprintf("%s %f", l, number)
fmt.Println(withCommaThousandSep)
}
}
输出
de 1.000.000,234560
uk 1 000 000,234560
zh 1,000,000.234560
ar ١٬٠٠٠٬٠٠٠٫٢٣٤٥٦٠
fr 1 000 000,234560