swift - 如何使用 ISOCode 快速获取带有小数点和分组分隔符的货币格式化程序

标签 swift currency-formatting

小数和分组分隔符不正确:

func setAmountString (amountValue: Int, isoCodeStr: String) {
    let formatter = NumberFormatter()
    formatter.currencyCode = isoCodeStr
    formatter.numberStyle = NumberFormatter.Style.currencyISOCode

     if let formatterStr: String = formatter.string(from: NSNumber(value: amountValue))  {
      return formatterStr
    }else {
      return "0.0"
    }
}

print("美元金额 (setAmountString(amountValue: Int(1234567.89), isoCodeStr: "USD"))") print("英镑金额 (setAmountString(amountValue: Int(1234567.89), isoCodeStr: "GBP"))") print("欧元金额 (setAmountString(amountValue: Int(1234567.89), isoCodeStr: "EUR"))")

Output:
amount in USD Optional("$1,234,567.00")
amount in GBP Optional("£1,234,567.00")
amount in EUR Optional("€1,234,567.00") 

Expected Output:
amount in USD Optional("$1,234,567.89")
amount in GBP Optional("£1.234.567,89")
amount in EUR Optional("€1.234.567,89") 

最佳答案

使用locale更改数字格式(分隔符等)。使用currencyCode更改货币符号。例如:

let formatter = NumberFormatter()
formatter.numberStyle = NumberFormatter.Style.currencyAccounting
formatter.locale = Locale(identifier: "DE")
formatter.currencyCode = "eur"
let string = formatter.string(from: 1234567) // "1.234.567,00 €"

关于swift - 如何使用 ISOCode 快速获取带有小数点和分组分隔符的货币格式化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48984009/

相关文章:

ios - 导航图 block 文本颜色未更改

java - 为货币格式化 JTable 列

ios - UIImageView 框架纵横比错误?

Swift MVVM - 使用协议(protocol)来处理 viewModel 事件

ios - Sprite Kit - 尽管 skview 具有正确的尺寸,但世界并未在正确的位置绘制 Sprite

swift - 两阶段初始化死锁 : how to init class's properties before super. init() 如果你必须调用 self.someMethod() 来初始化它们?

ios - Swift:使用本地化的百万和十亿文本格式化货币

laravel - Laravel 中的货币格式

javascript - 捕获Span类中的货币,除以12向上舍入并显示

金钱/货币的html5输入