在 swift 4 中使用带有货币格式化程序的负数

Using a negative number with a CurrencyFormatter in swit 4

我有一个如下所示的货币格式函数:

func currencyFormat() -> NumberFormatter{
    let currencyFormatter = NumberFormatter()
    currencyFormatter.usesGroupingSeparator = true
    currencyFormatter.numberStyle = NumberFormatter.Style.currency
    // localize to your grouping and decimal separator
    currencyFormatter.locale = NSLocale.current
    return currencyFormatter
}

所以当我这样使用它时:

currencyFormat().string(for: 20.34)   --> .34

如果我发送负值也是如此

currencyFormat().string(for: -20.34)  -->  -.34

我不希望负号以货币格式返回

效果很好,但我遇到的问题是,如果我向它发送负十进制数,我会返回负号。有办法去掉那个标志吗?在将小数发送到转换器之前,我应该将小数转换为正数吗?

通过取绝对值通过货币格式化程序发送之前确保数字为正:

let number = -500
let positiveNumber = abs(number)

let formattedNumber = currencyFormat().string(for: positiveNumber)

这是最简单、最易读的方法。