我将 Swift 的 NumberFormatter 与货币 numberStyle 一起使用。我设置了以下属性:
let value: Double = 345.23
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.minimumFractionDigits = 0
formatter.maximumFractionDigits = 0
formatter.locale = Locale(identifier: "en_US")
formatter.currencyCode = "USD"
print(formatter.string(from: NSNumber(value: value))) //Will print $345 as expected
如果我更改货币并再次打印,我会得到两位小数。为什么?
formatter.currencyCode = "EUR"
print(formatter.string(from: NSNumber(value: value))) //Will print €345.23 with two decimals
这是应该发生的还是它是一个错误?如果我将语言环境更改为其他内容,例如“fr_FR”,然后再次返回“en_US”,它将以 0 位小数打印。请参阅 XCTestCase 的附加结果。只有当语言环境被修改时,货币才会有预期的小数位数。
更新:它适用于 iOS 13.3,但不适用于 iOS 12.0 和 11.0.1