swift - 如何在 Swift 3 中格式化小数

标签 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

...但是我得到了错误

Argument labels '(_:)' do not match any available overloads

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

最佳答案

您可以先将Decimal 转换为NSDecimalNumber:

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

关于swift - 如何在 Swift 3 中格式化小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46107044/

相关文章:

swift - 堆栈 View 如何动态更改嵌套在其中的元素之间的间距

ios - 想要通过从 firebase 下载数据来显示,在 tableView 中添加一个 collectionView 。 ios 应用程序 swift

c# - 将 .NET 小数存储到 MySQL 中的最佳字段定义是什么?

java - 如何为欧洲语言设置数字格式

Java 数字格式如何将 +/- 符号更改为自定义文本

Flutter/Dart - 将 double 格式格式化为带有千位分隔符和小数点后数字的字符串

swift - 如何使 ObservableObject 符合 Codable 协议(protocol)?

python - 如何将十六进制数转换为存储在 DWORD 而不是 QWORD 中的十进制数?

mysql - 如何避免 MySQL 查询中的浮点运算?

iphone - Swift 版本的 Obj.C 宏 : IS_RETINA