use*_*058 3 currency nsformatter swift
我有一个字符串,"$4,102.33"需要转换为double.这将永远是美国.我唯一的办法是去掉了一个黑客$和,,然后转换为加倍.似乎NSFormatter只允许我转换为货币而不是转换货币.是否有内置功能或更好的方式除了删除$和,?在将其转换为双倍之前?
Jen*_*nny 17
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)
}
Run Code Online (Sandbox Code Playgroud)
将给定货币从 String 转换为 NSNumber 很容易:
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.locale = Locale(identifier: "en_US")
let number = formatter.number(from: string)
Run Code Online (Sandbox Code Playgroud)
直接获取双精度或小数(首选)的数字:
let doubleValue = number?.doubleValue
let decimalValue = number?.decimalValue
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5552 次 |
| 最近记录: |