在swit 4中使用带有CurrencyFormatter的负数

时间:2017-09-13 17:26:57

标签: ios swift number-formatting

我有一个货币格式func,如下所示:

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)   --> $20.34

如果我发送负值

,也是如此
currencyFormat().string(for: -20.34)  -->  -$20.34

我不希望负号以货币

格式化

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

1 个答案:

答案 0 :(得分:1)

通过采用绝对值:

,在通过货币格式化程序发送数字之前确保该数字为正数
let number = -500
let positiveNumber = abs(number)

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

这是最简单,最易读的方式。