如何快速将字符串转换为双精度

时间:2018-09-17 10:32:33

标签: swift

值取自可能包含字符串的Any字典

if value is String {
    total += Double(value)    
}

此代码给出错误“无法使用类型为((Any)''的参数列表调用类型为'Double'的初始化程序“)

if let item = value as? String {
    total += Double(item)
}

此代码给出错误“可选类型'Double'的值?”没有包装;您的意思是使用'!'或“?”?”

4 个答案:

答案 0 :(得分:1)

Double(fromString)是一个失败的初始化程序,结果可能为nil,因此它返回一个可选的Double?

您可以使用Swift的Nil-Coalescing运算符:

if let item = value as? String {
    total += Double(item) ?? 0
}

答案 1 :(得分:1)

当值可能为null时,预测任何值有时可能会导致致命错误。因此,使用??

设置默认值是一个好习惯

答案 2 :(得分:0)

  

可选类型“ Double”的值不展开你是说用'!'还是“?”?

出现此错误是因为您正在尝试向total添加可选值。

Double(item)会产生一个可选结果,因此您可以将其添加到 if-let 链中。

    if let item = value as? String, let doubleVal = Double(item) {
        total += doubleVal
    }

答案 3 :(得分:0)

将Swift String转换为Double

使用Double,Float,CGFloat转换浮点值(实数)。

let lessPrecisePI = Float("3.14")
let morePrecisePI = Double("3.1415926536")
let width = CGFloat(Double("200.0")!)

将Swift String转换为Int 使用Int和Int32,UInt64等变体来转换整数值。

let wholeNumber = Int("27")
let smallInt = Int16("34")
let largeInt = Int64("39384")

查看此博客以获取更多详细信息,supereasyapps.com