Swift convert货币字符串加倍
问题描述:
我有一个字符串,"$4,102.33"
需要转换为双倍。这将永远是美国。我唯一的办法就是剔除$
和,
,然后转换成双精度。似乎NSFormatter
只能让我转换成货币而不是它。是否有内置功能或更好的方式,而不仅仅是删除$
和,
?在将其转换为双倍之前?Swift convert货币字符串加倍
感谢。
答
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)
}
答
从字符串转换成的NSNumber对于给定的货币很简单:
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.locale = Locale(identifier: "en_US")
let number = formatter.number(from: string)
要得到你的电话号码为双人间或为十进制(preferred),然后直接:
let doubleValue = number?.doubleValue
let decimalValue = number?.decimalValue
注意,避免使用'双'货币:http://*.com/questions/3730019/why-not-use-double-or-float-to-represent-currency – Alexander
'NSNumberFormatter'将很容易地转换该字符串麻木了呃如果你正确设置它。在你的问题中显示你尝试使用'NSNumberFormatter'。 – rmaddy
Argh - 我只看到了.string方法。没有意识到有一个.number方法。 :-( – user441058