Swift 将货币字符串转换为双精度
Swift convert Currency string to double
我有一个字符串 ",102.33"
需要转换为双精度。这将永远是美国。我唯一的方法是破解 $
和 ,
然后转换为双倍。似乎 NSFormatter
只允许我转换为一种货币,而不是从它转换。是否有内置函数或比仅删除 $
和 ,
更好的方法?在将其转换为 double 之前?
NumberFormatter
可以与字符串相互转换。另外 Double
不能准确表示某些数字,因为它基于 2。使用 Decimal
速度较慢但更安全。
let str = ",102.33"
let formatter = NumberFormatter()
formatter.numberStyle = .currency
if let number = formatter.number(from: str) {
let amount = number.decimalValue
print(amount)
}
将给定货币的 String 转换为 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
我有一个字符串 ",102.33"
需要转换为双精度。这将永远是美国。我唯一的方法是破解 $
和 ,
然后转换为双倍。似乎 NSFormatter
只允许我转换为一种货币,而不是从它转换。是否有内置函数或比仅删除 $
和 ,
更好的方法?在将其转换为 double 之前?
NumberFormatter
可以与字符串相互转换。另外 Double
不能准确表示某些数字,因为它基于 2。使用 Decimal
速度较慢但更安全。
let str = ",102.33"
let formatter = NumberFormatter()
formatter.numberStyle = .currency
if let number = formatter.number(from: str) {
let amount = number.decimalValue
print(amount)
}
将给定货币的 String 转换为 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