Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Swift3中对带有逗号的数字运行操作_Swift - Fatal编程技术网

在Swift3中对带有逗号的数字运行操作

在Swift3中对带有逗号的数字运行操作,swift,Swift,如果我有一个超过1000的数字,所以它里面有一个逗号,我怎么能去掉逗号,或者把这个数字转换成一个双精度数,这样我就可以对它进行数学运算 现在,我有以下代码: let oldBFTally: Double = Double(plBFTally.text!)! let newBFTally: Double = round(1000 * (rawValue + oldBFTally) / 1000) 只要数字在1000以下,这段代码就非常有效。但是,由于我将数字格式化为文本,因此它有逗号(即:123

如果我有一个超过1000的数字,所以它里面有一个逗号,我怎么能去掉逗号,或者把这个数字转换成一个双精度数,这样我就可以对它进行数学运算

现在,我有以下代码:

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)
}

为什么要对格式化字符串而不是原始数字进行数学运算?为什么要对格式化字符串而不是原始数字进行数学运算?