Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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
Swift中非符号字符串为Int或Double_Swift_Char_Int_Double_Type Conversion - Fatal编程技术网

Swift中非符号字符串为Int或Double

Swift中非符号字符串为Int或Double,swift,char,int,double,type-conversion,Swift,Char,Int,Double,Type Conversion,显然,swift没有Isnumber()函数。我知道整数的值是string.toInt()。但是双倍怎么样? 我还发现有人编写了一个toDouble(),但它没有编译(NSNumber?没有名为doubleValue的成员),我猜这是因为不支持可选类型 extension String { func toDouble() -> Double? { var formatter = NSNumberFormatter() let number = formatter.num

显然,swift没有Isnumber()函数。我知道整数的值是string.toInt()。但是双倍怎么样? 我还发现有人编写了一个toDouble(),但它没有编译(NSNumber?没有名为doubleValue的成员),我猜这是因为不支持可选类型

extension String {
  func toDouble() -> Double? {
    var formatter = NSNumberFormatter()
    let number = formatter.numberFromString(self)
    if number == nil {
        return nil
      }
    return number.doubleValue
    }
}

来源:

您可以使用
is
操作符

if number is Double{
    //do double thinks
}
就快到了--
NSNumberFormatter
返回一个可选的
NSNumber
,它有一个
doubleValue
属性。您只需正确打开
NSNumber

extension String {
    func toDouble() -> Double? {
        enum F {
            static let formatter = NSNumberFormatter()
        }
        if let number = F.formatter.numberFromString(self) {
            return number.doubleValue
        }
        return nil
    }
}


"12.345".toDouble()    // 12.345
"12345".toDouble()     // 12345.0
"asdf".toDouble()      // nil

您是否正在尝试检查
字符串
是否是数字,或者任何类型的变量是否是数字?我认为这对字符串类型不起作用,但感谢您的帮助input@ericgu你的意思是它对像
“$20.00”
这样的字符串不起作用吗?这可能是一个完全不同的问题。是的。我认为这是可能的,但人们应该意识到你的答案的局限性。