在Swift3中对带有逗号的数字运行操作
如果我有一个超过1000的数字,所以它里面有一个逗号,我怎么能去掉逗号,或者把这个数字转换成一个双精度数,这样我就可以对它进行数学运算 现在,我有以下代码:在Swift3中对带有逗号的数字运行操作,swift,Swift,如果我有一个超过1000的数字,所以它里面有一个逗号,我怎么能去掉逗号,或者把这个数字转换成一个双精度数,这样我就可以对它进行数学运算 现在,我有以下代码: let oldBFTally: Double = Double(plBFTally.text!)! let newBFTally: Double = round(1000 * (rawValue + oldBFTally) / 1000) 只要数字在1000以下,这段代码就非常有效。但是,由于我将数字格式化为文本,因此它有逗号(即:123
let oldBFTally: Double = Double(plBFTally.text!)!
let newBFTally: Double = round(1000 * (rawValue + oldBFTally) / 1000)
只要数字在1000以下,这段代码就非常有效。但是,由于我将数字格式化为文本,因此它有逗号(即:1234.56),每当我尝试运行第一行时,它都会出错,并说:“致命错误:在展开可选值时意外发现了nil”
我能做些什么来解决这个问题
但是,因为我将数字格式化为文本,所以它有逗号(即:1234.56)
你试图用错误的方法解决这个问题。如果首先生成这个字符串,那么如果要对数字执行数学运算,就不应该在UI中将其显示为字符串,然后尝试从UI返回到数字。这就是滥用表示层作为数据模型
使用生成字符串的原始值,而不是在UI之间来回切换
但是,因为我将数字格式化为文本,所以它有逗号(即:1234.56)
你试图用错误的方法解决这个问题。如果首先生成这个字符串,那么如果要对数字执行数学运算,就不应该在UI中将其显示为字符串,然后尝试从UI返回到数字。这就是滥用表示层作为数据模型
不要试图在UI之间来回切换,而是使用生成字符串的原始值。@Jim是正确的;您的文本字段应该只包含内部变量的文本表示,因此您不需要将其转换回double,但作为参考,您可以使用
NumberFormatter
import Foundation
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
if let number = formattter.number(from:"10,000") {
print(number.doubleValue)
}
@吉姆是对的;您的文本字段应该只包含内部变量的文本表示,因此您不需要将其转换回double,但作为参考,您可以使用
NumberFormatter
import Foundation
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
if let number = formattter.number(from:"10,000") {
print(number.doubleValue)
}
为什么要对格式化字符串而不是原始数字进行数学运算?为什么要对格式化字符串而不是原始数字进行数学运算?