我想如下使用NumberFormatter
生成zh-localized百分数,以便如下取代我自己的代码:
let locale = Locale(identifier: lang)
let formatter = NumberFormatter()
formatter.locale = locale
formatter.numberStyle = .percent
formatter.maximumFractionDigits = d
let number = NSNumber(value: Double(n))
if let r = formatter.string(from: number) {
if lang == "zh" { return r.replace(["%"], withString: "%")
return r
}
// My fallback code
[不幸的是,与我的代码不同,简体中文NumberFormatter
生成拉丁语%
符号而不是中文版本%
(因此我要替换补丁)。
[我想知道是否可以进一步调整NumberFormatter
,以便它可以解决? (以及其他非拉丁语言)。
NumberFormatter
的输出不正确。但是,作为华人,我可以自信地说“ 50%”是在zh
语言环境中编写百分比的自然方法。这也可以从百度百科(中文维基百科)article中看出。我从未见过任何带有全角百分比符号的应用程序写入百分比。我什至无法在Mac上使用中文输入法输入它。在我看来,“ 50%”看起来很奇怪,可能是因为它混合了全角和半角字符。我偶尔在日本网站上看到过“ 50%”,但仍然很少见。
如果您
真的想要的话,可以在percentSymbol
中设置percentSymbol
属性:
NumberFormatter
老实说,我相信let formatter = NumberFormatter()
formatter.percentSymbol = "%"
formatter.numberStyle = .percent
print(formatter.string(from: 0.5) ?? "failed")
的输出,它是由一群专业的本地化工程师设计的。