我有一個字符串,"$4,102.33"
需要轉換爲雙倍。這將永遠是美國。我唯一的辦法就是剔除$
和,
,然後轉換成雙精度。似乎NSFormatter
只能讓我轉換成貨幣而不是它。是否有內置功能或更好的方式,而不僅僅是刪除$
和,
?在將其轉換爲雙倍之前?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://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currency – Alexander
'NSNumberFormatter'將很容易地轉換該字符串麻木了呃如果你正確設置它。在你的問題中顯示你嘗試使用'NSNumberFormatter'。 – rmaddy
Argh - 我只看到了.string方法。沒有意識到有一個.number方法。 :-( – user441058