【发布时间】:2019-07-27 12:10:38
【问题描述】:
在 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")
【问题讨论】: