如何在 Swift 3 中格式化十进制

fs_*_*gre 7 decimal numberformatter swift

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

如何格式化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
Run Code Online (Sandbox Code Playgroud)

这很好用,但我一直在阅读,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
Run Code Online (Sandbox Code Playgroud)

...但我得到错误

参数标签“(_:)”不匹配任何可用的重载

Decimal在 Swift 中格式化s的正确方法是什么?

Cha*_*tka 8

你可以把你DecimalNSDecimalNumber第一个:

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