我有一个字符串,"$4,102.33"
需要转换为双精度。这将永远是美国。我唯一的方法是删除然后转换为双倍的$
黑客,
。似乎NSFormatter
只让我转换为货币而不是从它。$
除了删除and之外,是否有内置功能或更好的方法,
?在将其转换为双倍之前?
问问题
8654 次
2 回答
24
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)
}
于 2017-01-26T23:28:14.427 回答
4
将给定货币从 String 转换为 NSNumber 很简单:
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.locale = Locale(identifier: "en_US")
let number = formatter.number(from: string)
要将您的号码作为 Double 或 Decimal (首选),然后直接:
let doubleValue = number?.doubleValue
let decimalValue = number?.decimalValue
于 2017-01-27T02:23:39.910 回答