如果我有一个超过1,000的数字,所以它中有一个逗号,我怎么能去掉逗号,或者把这个数字转换为Double,这样我就可以对它运行数学运算?< / p>
现在,我有以下代码:
let oldBFTally: Double = Double(plBFTally.text!)!
let newBFTally: Double = round(1000 * (rawValue + oldBFTally) / 1000)
这段代码效果很好,只要数字小于1000.但是,由于我将数字格式化为文本,因此它有逗号(即:1,234.56),每当我尝试运行第一行时,它错误,说:“致命错误:在展开可选值时意外发现nil”。
我可以做些什么来解决这个问题?
答案 0 :(得分:1)
但是,因为我将数字格式化为文本,所以它有逗号(即:1,234.56)
你试图以错误的方式解决问题。如果您首先生成此字符串,那么如果您想对数字执行数学运算,则不应将其显示为UI中的字符串,然后尝试从UI向后返回到数字。这会误导您的表示层作为您的数据模型。
不要试图在UI之间来回移动,而是使用从中生成字符串的原始值。
答案 1 :(得分:1)
@Jim是对的;您的文本字段应该只包含内部变量的文本表示,因此您不需要转换回double,但作为参考,您可以使用NumberFormatter
import Foundation
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
if let number = formattter.number(from:"10,000") {
print(number.doubleValue)
}