Ios 在swit 4中使用负数和CurrencyFormatter
我有一个货币格式func,如下所示: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 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,但对将来的参考很好奇,仅此而已。我认为这样的小事不值得再问一个问题。