如何在Swift 3中格式化Decimal

时间:2017-09-08 00:49:12

标签: swift decimal numberformatter

我正在尝试使用Swift Decimal结构进行货币操作,但我无法对其进行格式化。

如何格式化var myDecimal:Decimal = 9999.99以显示$ 9,999.99?

不使用Decimal我可以按照以下方式执行...

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中格式化Decimal的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

您可以先将Decimal投射到NSDecimalNumber

let priceString = currencyFormatter.string(from: myTotal as NSDecimalNumber)