NumberFormatter分组未按预期工作

时间:2019-10-24 15:02:00

标签: swift nsnumberformatter currency-formatting

在进行货币格式化时,我尝试格式化智利比索时发现了一个问题。

以下代码:

let priceFormatter = NumberFormatter()
priceFormatter.locale = Locale(identifier: "es_CL")
priceFormatter.numberStyle = .currency
priceFormatter.currencyCode = "CLP"

priceFormatter.string(from: 9990) // A
priceFormatter.string(from: 99900) // B

执行此操作,我得到 A $ 9990 B $ 99.990
我想要实现的是 A

$ 9.990

好像格式化程序没有在第一种情况下添加千位分组分隔符,我不知道为什么。我尝试将设置groupingSize设置为3失败了。

(仅4位数字发生)

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,并在这里找到了解释: iOS13: NumberFormatter missing groupingSeparator when try to format 4 digits numbers with es_ES locale

我最终设置了us_US语言环境:

let formatter = NumberFormatter()
formatter.locale = Locale(identifier: "us_US")
formatter.groupingSeparator = " "
formatter.usesGroupingSeparator = true
formatter.groupingSize = 3

答案 1 :(得分:0)

我试图实现同样的目标,最终我要做的是:

let price: Double = 1000
let currencyFormatter = NumberFormatter()
currencyFormatter.numberStyle = .decimal
currencyFormatter.groupingSeparator = "."
currencyFormatter.maximumFractionDigits = 0
let balanceText = currencyFormatter.string(from: NSNumber(value: price))!

return "$" + balanceText
相关问题