【发布时间】:2017-09-08 00:49:11
【问题描述】:
我正在尝试使用 Swift Decimal 结构进行货币操作,但我无法对其进行格式化。
如何格式化var myDecimal:Decimal = 9999.99 以显示 $9,999.99?
不使用Decimals 我可以按如下方式进行...
let myTotal:NSNumber = 9999.99
let currencyFormatter = NumberFormatter()
currencyFormatter.usesGroupingSeparator = true
currencyFormatter.numberStyle = .currency
currencyFormatter.locale = NSLocale.current
let priceString = currencyFormatter.string(from: myTotal)
myLabel.text = priceString
这很好用,但我一直在阅读,Decimal似乎是正确的货币类型。
我试过了……
let myTotal:Decimal = 9999.99
let currencyFormatter = NumberFormatter()
currencyFormatter.usesGroupingSeparator = true
currencyFormatter.numberStyle = .currency
// localize to your grouping and decimal separator
currencyFormatter.locale = NSLocale.current
let priceString = currencyFormatter.string(from: NSNumber(myTotal))
myLabel.text = priceString
...但我得到错误
参数标签“(_:)”不匹配任何可用的重载
在 Swift 中格式化Decimals 的正确方法是什么?
【问题讨论】:
-
只需使用
string(for: myTotal)而不是string(from: -
我认为使用
Decimal不会比Float或Double带来任何好处,除非您需要高精度,而这对于货币来说不太可能。 -
@LeoDabus
string(for: myTotal)成功了。谢谢。 -
从不使用 float 或 double 作为货币。见stackoverflow.com/questions/3730019/…
标签: swift decimal numberformatter