NSNumberFormatter currency: "plusSign" 替换货币
NSNumberFormatter currency: "plusSign" replaces currency
在 Swift 中配置 NSNumberFormatter 时:
extension NumberFormatter {
convenience init(currencyCode code: String) {
self.init()
numberStyle = .currency
locale = .autoupdatingCurrent
maximumFractionDigits = 2
positivePrefix = plusSign
currencyCode = code
minimumFractionDigits = 2
}
它适用于货币符号位于末尾的语言环境,例如de_DE
:12345
变为 +1.234,00 €
。但是对于 de_AT
它变成了 +1.234,00
- 如果没有 positivePrefix
它将是 € 1.234,00
;我怎样才能总是在前面显示符号(+和-)但仍然保留货币?
编辑:
我预计此测试会失败(因为缺少货币),但它成功了:
currencyFormatter.locale = Locale(identifier: "de_AT")
XCTAssertEqual(currencyFormatter.string(from: NSNumber(value: 0)), "+0,00")
原来会计是你的救星,改变数字样式
numberStyle = .currencyAccounting
你得到了预期的输出
在 Swift 中配置 NSNumberFormatter 时:
extension NumberFormatter {
convenience init(currencyCode code: String) {
self.init()
numberStyle = .currency
locale = .autoupdatingCurrent
maximumFractionDigits = 2
positivePrefix = plusSign
currencyCode = code
minimumFractionDigits = 2
}
它适用于货币符号位于末尾的语言环境,例如de_DE
:12345
变为 +1.234,00 €
。但是对于 de_AT
它变成了 +1.234,00
- 如果没有 positivePrefix
它将是 € 1.234,00
;我怎样才能总是在前面显示符号(+和-)但仍然保留货币?
编辑:
我预计此测试会失败(因为缺少货币),但它成功了:
currencyFormatter.locale = Locale(identifier: "de_AT")
XCTAssertEqual(currencyFormatter.string(from: NSNumber(value: 0)), "+0,00")
原来会计是你的救星,改变数字样式
numberStyle = .currencyAccounting
你得到了预期的输出