NSNumberFormatter货币:“ plusSign”替换货币

时间:2019-07-27 12:10:38

标签: swift nsnumberformatter

在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")

1 个答案:

答案 0 :(得分:1)

证明会计是您的救命稻草,更改数字样式

numberStyle = .currencyAccounting

您将获得预期的输出