我正在尝试用swift语言编写一个BMI程序。 我有这个问题:如何转换字符串为双精度?
在Objective-C中,我可以这样做:
double myDouble = [myString doubleValue];
但是如何在Swift语言中实现这一点呢?
我正在尝试用swift语言编写一个BMI程序。 我有这个问题:如何转换字符串为双精度?
在Objective-C中,我可以这样做:
double myDouble = [myString doubleValue];
但是如何在Swift语言中实现这一点呢?
当前回答
Swift 2更新 有新的可失败的初始化器,允许你以更习惯和安全的方式来做这件事(正如许多答案所指出的,NSString的double值不是很安全,因为它对非数字值返回0。这意味着"foo"和"0"的doubleValue是相同的。)
let myDouble = Double(myString)
这将返回一个可选值,因此在诸如传入"foo"时doubleValue将返回0,可失败的初始化器将返回nil。您可以使用守卫、if-let或映射来处理Optional<Double>
原来的帖子: 你不需要像接受的答案那样使用NSString构造函数。你可以像这样简单地桥接它:
(swiftString as NSString).doubleValue
其他回答
斯威夫特4.0
试试这个
let str:String = "111.11"
let tempString = (str as NSString).doubleValue
print("String:-",tempString)
1.
let strswift = "12"
let double = (strswift as NSString).doubleValue
2.
var strswift= "10.6"
var double : Double = NSString(string: strswift).doubleValue
也许这对你有帮助。
我发现更可读添加一个扩展字符串如下:
extension String {
var doubleValue: Double {
return (self as NSString).doubleValue
}
}
然后你就可以写代码了:
myDouble = myString.doubleValue
我的问题是逗号,所以我这样解决它:
extension String {
var doubleValue: Double {
return Double((self.replacingOccurrences(of: ",", with: ".") as NSString).doubleValue)
}
}
斯威夫特4
extension String {
func toDouble() -> Double {
let nsString = self as NSString
return nsString.doubleValue
}
}