在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")
答案 0 :(得分:1)
证明会计是您的救命稻草,更改数字样式
numberStyle = .currencyAccounting
您将获得预期的输出