Swift将货币字符串转换为double

时间:2017-01-26 23:10:25

标签: swift currency nsformatter

我有一个字符串,"$4,102.33"需要转换为double。这将永远是美国。我唯一的方法是删除$,,然后转换为double。似乎NSFormatter只允许我转换为货币而不是货币。除了删除$,之外,还有内置函数或更好的方法吗?在将其转换为双倍之前?

2 个答案:

答案 0 :(得分:14)

NumberFormatter可以与字符串进行转换。 Double也不能完全代表某些数字,因为它基于2.使用Decimal更慢但更安全。

let str = "$4,102.33"

let formatter = NumberFormatter()
formatter.numberStyle = .currency

if let number = formatter.number(from: str) {
    let amount = number.decimalValue
    print(amount)
}

答案 1 :(得分:3)

要将给定货币的字符串转换为NSNumber很容易:

let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.locale = Locale(identifier: "en_US")
let number = formatter.number(from: string)

要将您的号码设为Double或十进制(preferred),请直接:

let doubleValue = number?.doubleValue
let decimalValue = number?.decimalValue