これは私にはうまくいきませんでした。これにより、通貨記号と金額の間にスペースを追加することができました。
Swift 3.0
currencyFormatter.negativePrefix = "\(currencyFormatter.negativePrefix!) "
currencyFormatter.positivePrefix = "\(currencyFormatter.positivePrefix!) "
完全なコード:
extension Int {
func amountStringInCurrency(currencyCode: String) -> (str: String, nr: Double) {
let currencyFormatter = NumberFormatter()
currencyFormatter.usesGroupingSeparator = true
currencyFormatter.numberStyle = .currency
currencyFormatter.currencyCode = currencyCode
currencyFormatter.negativePrefix = "\(currencyFormatter.negativePrefix!) "
currencyFormatter.positivePrefix = "\(currencyFormatter.positivePrefix!) "
let nrOfDigits = currencyFormatter.maximumFractionDigits
let number: Double = Double(self)/pow(10, Double(nrOfDigits))
return (currencyFormatter.string(from: NSNumber(value: number))!, number)
}
}
この拡張機能は、MinorUnitsで金額を表すInt上にあります。つまり、米ドルは2桁で表され、日本円は数字なしで表されます。したがって、これはこの拡張機能が返すものです。
let amountInMinorUnits: Int = 1234
amountInMinorUnits.amountStringInCurrency(currencyCode: "USD").str // $ 12.34
amountInMinorUnits.amountStringInCurrency(currencyCode: "JPY").str // JP¥ 1,234
千と小数点の区切り文字は、ユーザーのロケールによって決定されます。