簡體   English   中英

在Swift中將字符串轉換為Double

[英]Converting String to Double in Swift

我正在嘗試將要從核心數據中檢索的String轉換為Double。 我收到一條錯誤消息:“可選類型'Double的值?' 沒有包裝;您的意思是使用'!' 要么 '?'?” 如果我嘗試添加一個! 或?,然后出現新錯誤“無法強制打開非可選類型'Double'的包裝值”。請參見下面的代碼。

 @IBAction func proceedTapped(_ sender: Any) {



    let l1 = loc1.latitude
    let l2 = loc2.latitude
    let lg1 = loc1.longitude
    let lg2 = loc2.longitude
    var lat1 :Double = 0.0
    var lat2 :Double = 0.0
    var long1 :Double = 0.0
    var long2 :Double = 0.0

    if let l1 = l1 as? String{
         lat1 = Double(l1)
    }

    if let l2 = l2 as? String{
         lat2 = Double(l2)
    }

    if let lg1 = lg1 as? String{
         long1 = Double(lg1)
    }

    if let lg2 = lg2 as? String{
         long2 = Double(lg2)
    }

    let earthR:Double = 3959.0

let step1 = acos(sin(lat1)*sin(lat2)+cos(lat1)*cos(lat2)*cos(abs(long1-long2)))

let dist = step1*earthR

您應該檢查您的字符串是否正確,或者它看起來像是Double格式

var lat1  = "4.0"

if let lat1 = lat1 as? String{
   print(Double(lat1)) // 4.0
} 

無法保證您的字符串可以轉換為Double(例如,您的字符串為“ hello”),因此Double()初始化程序是一個失敗的初始化程序。 換句話說,Double(string :)方法返回一個可選的Double。

因此,請決定如何處理無法轉換為Double的失敗。 例如:

if let l1 = l1 as? String{
     lat1 = Double(l1) ?? 0.0
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM