原創文章,歡迎轉載。轉載請註明:關東昇的博客php
在C、Objective-C和Java等其餘語言中,整型之間有兩種轉換方法:安全
從小範圍數到大範圍數轉換是自動的;微信
從大範圍數到小範圍數須要強制類型轉換,有可能形成數據精度的丟失。函數
而在Swift中這兩種方法是行不通的,須要經過一些函數進行顯式地轉換,代碼以下:網站
let historyScore:UInt8 = 90spa
let englishScore:UInt16 = 130.net
let totalScore = historyScore + englishScore //錯誤設計
程序就會有編譯錯誤,緣由是historyScore是UInt8類型,而englishScore是UInt16類型,它們之間不能轉換。orm
兩種轉換方法:教程
一種是把UInt8的historyScore轉換爲UInt16類型。因爲是從小範圍數轉換爲大範圍數,這種轉換是安全的。
代碼:
let totalScore = UInt16(historyScore) + englishScore //是正確的轉換方法。
另一種是把UInt16的englishScore轉換爲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