Swift - 如何将String转换为Double

Swift - 如何将String转换为Double

我正在尝试用快速语言编写BMI程序。我遇到了这个问题:如何将String转换为Double?

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

double myDouble = [myString doubleValue];

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


宝慕林4294392
浏览 3201回答 3
3回答

饮歌长啸

有新failable初始化,允许你这样做的更地道和安全的方式(尽可能多的答案已经注意到,的NSString的双重价值也不是很安全的,因为它的非数值返回0。这意味着,doubleValue中"foo"和"0"是相同。)let&nbsp;myDouble&nbsp;=&nbsp;Double(myString)这将返回一个可选项,因此在传入返回0的情况下"foo",doubleValue可返回的初始化函数将返回nil。您可以使用guard,if-let或map处理Optional<Double>原帖:&nbsp;您不需要像接受的答案建议那样使用NSString构造函数。您可以像这样简单地桥接它:(swiftString&nbsp;as&nbsp;NSString).doubleValue

幕布斯6054654

对于更多Swift的感觉,使用NSFormatter()避免强制转换NSString,并nil在字符串不包含Double值时返回(例如“test”将不返回0.0)。let&nbsp;double&nbsp;=&nbsp;NSNumberFormatter().numberFromString(myString)?.doubleValue或者,扩展Swift的String类型:extension&nbsp;String&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;func&nbsp;toDouble()&nbsp;->&nbsp;Double?&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;NSNumberFormatter().numberFromString(self)?.doubleValue&nbsp;&nbsp;&nbsp;&nbsp;}}并使用它像toInt():var&nbsp;myString&nbsp;=&nbsp;"4.2"var&nbsp;myDouble&nbsp;=&nbsp;myString.toDouble()这将返回一个Double?必须解包的可选项。强制解包:println("The&nbsp;value&nbsp;is&nbsp;\(myDouble!)")&nbsp;//&nbsp;prints:&nbsp;The&nbsp;value&nbsp;is&nbsp;4.2或者使用if let语句:if&nbsp;let&nbsp;myDouble&nbsp;=&nbsp;myDouble&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;println("The&nbsp;value&nbsp;is&nbsp;\(myDouble)")&nbsp;//&nbsp;prints:&nbsp;The&nbsp;value&nbsp;is&nbsp;4.2}更新:&nbsp;对于本地化,将区域设置应用于NSFormatter非常容易,如下所示:let&nbsp;formatter&nbsp;=&nbsp;NSNumberFormatter()formatter.locale&nbsp;=&nbsp;NSLocale(localeIdentifier:&nbsp;"fr_FR")let&nbsp;double&nbsp;=&nbsp;formatter.numberFromString("100,25")最后,NSNumberFormatterCurrencyStyle如果您使用的字符串包含货币符号,则可以在格式化程序上使用。
打开App,查看更多内容
随时随地看视频慕课网APP