在进行货币格式化时,我尝试格式化智利比索时发现了一个问题。
以下代码:
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
好像格式化程序没有在第一种情况下添加千位分组分隔符,我不知道为什么。我尝试将设置groupingSize
设置为3失败了。
(仅4位数字发生)
答案 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