我正在尝试用swift语言编写一个BMI程序。 我有这个问题:如何转换字符串为双精度?
在Objective-C中,我可以这样做:
double myDouble = [myString doubleValue];
但是如何在Swift语言中实现这一点呢?
我正在尝试用swift语言编写一个BMI程序。 我有这个问题:如何转换字符串为双精度?
在Objective-C中,我可以这样做:
double myDouble = [myString doubleValue];
但是如何在Swift语言中实现这一点呢?
当前回答
我的问题是逗号,所以我这样解决它:
extension String {
var doubleValue: Double {
return Double((self.replacingOccurrences(of: ",", with: ".") as NSString).doubleValue)
}
}
其他回答
斯威夫特4.0
试试这个
let str:String = "111.11"
let tempString = (str as NSString).doubleValue
print("String:-",tempString)
如前所述,实现这一目标的最佳方法是直接铸造:
(myString as NSString).doubleValue
在此基础上,你可以创建一个流畅的本地Swift String扩展:
extension String {
var doubleValue: Double {
return (self as NSString).doubleValue
}
}
这允许你直接使用:
myString.doubleValue
它会帮你选角。如果苹果确实添加了一个doubleValue到本地字符串,你只需要删除扩展和其余的代码将自动编译好!
斯威夫特:4和5
可能有两种方法:
String -> Int -> Double: let strNumber = "314" if let intFromString = Int(strNumber){ let dobleFromInt = Double(intFromString) 打印(dobleFromInt) } String -> NSString -> Double 让strNumber1 = "314" 让NSstringFromString = NSString(字符串:strNumber1) let doubleFromNSString = NSstringFromString.doubleValue 打印(doubleFromNSString)
使用它,无论你喜欢根据你需要的代码。
试试这个:
var myDouble = myString.bridgeToObjectiveC().doubleValue
println(myDouble)
NOTE
在Beta 5中删除。这已经不管用了?
你可以使用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")
}