Swift-如何将String转换为Double

我正在尝试用快速的语言编写BMI程序。我有一个问题:如何将字符串转换为Double?

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

double myDouble = [myString doubleValue];

但是如何用Swift语言实现呢?

回答:

您应该使用新的类型初始值设定项在String和数字类型(Double,Float,Int)之间进行转换。它会返回一个可选类型(Double?),该类型将具有正确的值;如果String不是数字,则返回nil。

不建议使用NSString doubleValue属性,因为如果无法转换该值(例如,错误的用户输入),它将返回0。

let lessPrecisePI = Float("3.14")

let morePrecisePI = Double("3.1415926536")

let invalidNumber = Float("alphabet") // nil, not a valid number

if let cost = Double(textField.text!) {

print("The user entered a value price of \(cost)")

} else {

print("Not a valid number: \(textField.text!)")

}

您可以使用NumberFormatter该类转换带格式的数字和货币。

let formatter = NumberFormatter()

formatter.locale = Locale.current // USA: Locale(identifier: "en_US")

formatter.numberStyle = .decimal

let number = formatter.number(from: "9,999.99")

let usLocale = Locale(identifier: "en_US")

let frenchLocale = Locale(identifier: "fr_FR")

let germanLocale = Locale(identifier: "de_DE")

let englishUKLocale = Locale(identifier: "en_GB") // United Kingdom

formatter.numberStyle = .currency

formatter.locale = usLocale

let usCurrency = formatter.number(from: "$9,999.99")

formatter.locale = frenchLocale

let frenchCurrency = formatter.number(from: "9999,99€")

// Note: "9 999,99€" fails with grouping separator

// Note: "9999,99 €" fails with a space before the €

formatter.locale = germanLocale

let germanCurrency = formatter.number(from: "9999,99€")

// Note: "9.999,99€" fails with grouping separator

formatter.locale = englishUKLocale

let englishUKCurrency = formatter.number(from: "£9,999.99")

在我的博客文章上了解有关将String转换为Double类型(和货币)的更多信息。

以上是 Swift-如何将String转换为Double 的全部内容, 来源链接: utcz.com/qa/428649.html

回到顶部