我正在尝试用swift语言编写一个BMI程序。 我有这个问题:如何转换字符串为双精度?

在Objective-C中,我可以这样做:

double myDouble = [myString doubleValue];

但是如何在Swift语言中实现这一点呢?


当前回答

或者你可以这样做:

var myDouble = Double((mySwiftString.text as NSString).doubleValue)

其他回答

你可以使用StringEx。它用字符串到数字的转换扩展了String,包括toDouble()。

extension String {
    func toDouble() -> Double?
}

它验证字符串,如果不能转换为double则失败。

例子:

import StringEx

let str = "123.45678"
if let num = str.toDouble() {
    println("Number: \(num)")
} else {
    println("Invalid string")
}

我还没找到我想要的答案。 我只是把我的贴在这里,希望它能帮助到任何人。只有在不需要特定格式时,这个答案才有效。

斯威夫特3

extension String {
    var toDouble: Double {
        return Double(self) ?? 0.0
    }
}

我们可以使用CDouble值,它将通过myString.doubleValue获得

在Swift 2.0中使用此代码

let strWithFloat = "78.65"
let floatFromString = Double(strWithFloat)

请到操场上检查!

let sString = "236.86"

var dNumber = NSNumberFormatter().numberFromString(sString)
var nDouble = dNumber!
var eNumber = Double(nDouble) * 3.7

顺便说一下,在我的Xcode中

.toDouble() -不存在

从非数值字符串中创建值0.0