3 回答

TA貢獻1848條經驗 獲得超6個贊
這是一個有關如何在Swift 3上使用它的示例。(編輯:在Swift 4中也可以使用)
let price = 123.436 as NSNumber
let formatter = NumberFormatter()
formatter.numberStyle = .currency
// formatter.locale = NSLocale.currentLocale() // This is the default
// In Swift 4, this ^ has been renamed to simply NSLocale.current
formatter.string(from: price) // "$123.44"
formatter.locale = Locale(identifier: "es_CL")
formatter.string(from: price) // $123"
formatter.locale = Locale(identifier: "es_ES")
formatter.string(from: price) // "123,44 €"
這是關于如何在Swift 2上使用它的舊示例。
let price = 123.436
let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
// formatter.locale = NSLocale.currentLocale() // This is the default
formatter.stringFromNumber(price) // "$123.44"
formatter.locale = NSLocale(localeIdentifier: "es_CL")
formatter.stringFromNumber(price) // $123"
formatter.locale = NSLocale(localeIdentifier: "es_ES")
formatter.stringFromNumber(price) // "123,44 €"

TA貢獻1810條經驗 獲得超4個贊
如果您正在尋找一種可以為您提供解決方案的解決方案:
“ 5” =“ $ 5”
“ 5.0” =“ $ 5”
“ 5.00” =“ $ 5”
“ 5.5” =“ $ 5.50”
“ 5.50” =“ $ 5.50”
“ 5.55” =“ $ 5.55”
“ 5.234234” =“ 5.23”
請使用以下內容:
func cleanDollars(_ value: String?) -> String {
? ? guard value != nil else { return "$0.00" }
? ? let doubleValue = Double(value!) ?? 0.0
? ? let formatter = NumberFormatter()
? ? formatter.currencyCode = "USD"
? ? formatter.currencySymbol = "$"
? ? formatter.minimumFractionDigits = (value!.contains(".00")) ? 0 : 2
? ? formatter.maximumFractionDigits = 2
? ? formatter.numberStyle = .currencyAccounting
? ? return formatter.string(from: NSNumber(value: doubleValue)) ?? "$\(doubleValue)"
}

TA貢獻1797條經驗 獲得超4個贊
我還實現了@Ni?oScript提供的解決方案作為擴展:
延期
// Create a string with currency formatting based on the device locale
//
extension Float {
var asLocaleCurrency:String {
var formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.locale = NSLocale.currentLocale()
return formatter.stringFromNumber(self)!
}
}
用法:
let amount = 100.07
let amountString = amount.asLocaleCurrency
print(amount.asLocaleCurrency())
// prints: "$100.07"
迅捷3
extension Float {
var asLocaleCurrency:String {
var formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.locale = Locale.current
return formatter.string(from: self)!
}
}
- 3 回答
- 0 關注
- 636 瀏覽
添加回答
舉報