Ios 在swit 4中使用负数和CurrencyFormatter

Ios 在swit 4中使用负数和CurrencyFormatter,ios,swift,number-formatting,Ios,Swift,Number Formatting,我有一个货币格式func,如下所示: func currencyFormat() -> NumberFormatter{ let currencyFormatter = NumberFormatter() currencyFormatter.usesGroupingSeparator = true currencyFormatter.numberStyle = NumberFormatter.Style.currency // localize to you

我有一个货币格式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
所以当我这样使用它时:

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
我不希望负号以货币格式返回


它工作得很好,但我遇到的问题是,如果我给它发送一个负的十进制数,我会得到负号。有没有办法放下那个牌子?在将十进制数发送到转换器之前,是否应将其转换为正数?

在通过货币格式化程序发送之前,请确保数字为正数,方法是获取绝对值:

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

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

这是最简单、可读性最强的方法。

您能否提供更多的代码,以及示例,您有什么具体问题?您希望的行为是什么<代码>-500变为
$500
?您需要澄清您的问题。您发布的代码除了创建格式化程序外,什么都不做。显示实际演示您的问题的代码。显示显示实际结果的
print
语句的精确输出,并清楚地指出所需的结果。“在将小数发送到转换器之前,是否应将其转换为正数?”——是的,这是一个简单而干净的解决方案。设置
currencyFormatter.minusSign=“
更像是一种黑客行为。@Paolo,是的,这就是我想发生的事情如果这个数字是一个NSDecimalNumber怎么办?@icekomo你可以通过执行
number来获得一个
Double
的值。doubleValue
@icekomo:如果你的输入是一个NSDecimalNumber,请在问题中告诉我们。您的示例仅使用了
Double
。@Martin,我没有使用Double,但对将来的参考很好奇,仅此而已。我认为这样的小事不值得再问一个问题。