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_DE12345 变为 +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

你得到了预期的输出