在 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)
这是最简单、最易读的方法。
我有一个如下所示的货币格式函数:
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)
这是最简单、最易读的方法。