《從零開始學Swift》學習筆記(Day 15)——請注意數字類型之間的轉換

原創文章,歡迎轉載。轉載請註明:關東昇的博客php

    CObjective-CJava等其餘語言中,整型之間有兩種轉換方法:安全

  •  從小範圍數到大範圍數轉換是自動的;微信

  •  從大範圍數到小範圍數須要強制類型轉換,有可能形成數據精度的丟失。函數

而在Swift中這兩種方法是行不通的,須要經過一些函數進行顯式地轉換,代碼以下:網站

 let historyScore:UInt8 = 90spa

 let englishScore:UInt16 = 130.net

 let totalScore = historyScore + englishScore  //錯誤設計


程序就會有編譯錯誤,緣由是historyScoreUInt8類型,而englishScoreUInt16類型,它們之間不能轉換。orm

 兩種轉換方法:教程

  • 一種是把UInt8historyScore轉換爲UInt16類型。因爲是從小範圍數轉換爲大範圍數,這種轉換是安全的。

代碼:

let totalScore = UInt16(historyScore) + englishScore   //是正確的轉換方法。

  • 另一種是把UInt16englishScore轉換爲UInt8類型。因爲是從大範圍數轉換爲小範圍數,這種轉換是不安全的,若是轉換的數比較大可能會形成精度的丟失。

代碼:

let totalScore = historyScore + UInt8(englishScore)  //是正確的轉換方法。

本例中englishScore的值是130,這個轉換是成功的,若是把這個數修改成1300,雖然程序編譯沒有問題,可是會在控制檯中輸出異常信息。


整型與浮點型之間的轉換

    整型與浮點型之間的轉換與整型之間的轉換相似:

 let historyScore:Float = 90.6   

 let englishScore:UInt16 = 130 

 let totalScore = historyScore + englishScore  //錯誤  

 let totalScore = historyScore + Float(englishScore)  //正確,安全

 let totalScore = UInt16(historyScore) + englishScore  //正確,小數被截掉 

 

歡迎關注關東昇新浪微博@tony_ 關東昇。

關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息

更多精品iOS、Cocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com

智捷課堂論壇網站:http://51work6.com/forum.php

相關文章
相關標籤/搜索