为了账号安全,请及时绑定邮箱和手机立即绑定

Swift - 如何将String转换为Double

Swift - 如何将String转换为Double

宝慕林4294392 2019-08-16 16:24:10
Swift - 如何将String转换为Double我正在尝试用快速语言编写BMI程序。我遇到了这个问题:如何将String转换为Double?在Objective-C中,我可以这样做:double myDouble = [myString doubleValue];但是如何在Swift语言中实现这一目标呢?
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

有新failable初始化,允许你这样做的更地道和安全的方式(尽可能多的答案已经注意到,的NSString的双重价值也不是很安全的,因为它的非数值返回0。这意味着,doubleValue"foo""0"是相同。)

let myDouble = Double(myString)

这将返回一个可选项,因此在传入返回0的情况下"foo"doubleValue可返回的初始化函数将返回nil。您可以使用guardif-letmap处理Optional<Double>

原帖: 您不需要像接受的答案建议那样使用NSString构造函数。您可以像这样简单地桥接它:

(swiftString as NSString).doubleValue


查看完整回答
反对 回复 2019-08-16
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

对于更多Swift的感觉,使用NSFormatter()避免强制转换NSString,并nil在字符串不包含Double值时返回(例如“test”将不返回0.0)。

let double = NSNumberFormatter().numberFromString(myString)?.doubleValue

或者,扩展Swift的String类型:

extension String {
    func toDouble() -> Double? {
        return NSNumberFormatter().numberFromString(self)?.doubleValue    }}

并使用它像toInt()

var myString = "4.2"var myDouble = myString.toDouble()

这将返回一个Double?必须解包的可选项。

强制解包:

println("The value is \(myDouble!)") // prints: The value is 4.2

或者使用if let语句:

if let myDouble = myDouble {
    println("The value is \(myDouble)") // prints: The value is 4.2}

更新: 对于本地化,将区域设置应用于NSFormatter非常容易,如下所示:

let formatter = NSNumberFormatter()formatter.locale = NSLocale(localeIdentifier: "fr_FR")let double = formatter.numberFromString("100,25")

最后,NSNumberFormatterCurrencyStyle如果您使用的字符串包含货币符号,则可以在格式化程序上使用。


查看完整回答
反对 回复 2019-08-16
  • 3 回答
  • 0 关注
  • 3190 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信