【问题标题】:NSNumberFormatter currency: "plusSign" replaces currencyNSNumberFormatter 货币:“plusSign”替换货币
【发布时间】: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_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")

【问题讨论】:

    标签: swift nsnumberformatter


    【解决方案1】:

    原来会计是你的救星,改变数字风格

    numberStyle = .currencyAccounting
    

    你会得到预期的输出

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多