Swift數字型別之間的轉換

2021-08-27 19:19:32 字數 2111 閱讀 6432

swift數字型別之間的轉換swift是一種安全的語言,對於型別的檢查非常嚴格,不同型別之間不能隨便轉換。

一、整型之間的轉換

在c和objective-c等其他語言中,整型之間有兩種轉換方法:

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

從大範圍數到小範圍數需要強制型別轉換,有可能造成資料精度的丟失。

而在swift中這兩種方法是行不通的,我們需要通過一些函式進行顯式地轉換,**如下:

[html]view plain

copy

let 

historyscore:uint8

= 90

let englishscore:uint16

= 130

let totalscore

= historyscore

+ englishscore  //錯誤  ①  

let totalscore

= uint16

(historyscore) + englishscore   //正確 ②  

let totalscore

= historyscore

+ uint8(englishscore)  //正確   ③  

上述**宣告和初始化了兩個常量historyscore和englishscore,我們把它們相加賦值給totalscore。如果採用第①行**實現相加,程式就會有編譯錯誤,原因是historyscore是uint8型別,而englishscore是uint16型別,它們之間不能轉換。

我們有兩種轉換方法。

一種是把uint8的historyscore轉換為uint16型別。由於是從小範圍數轉換為大範圍數,這種轉換是安全的。**第②行uint16(historyscore)就是正確的轉換方法。

另外一種是把uint16的englishscore轉換為uint8型別。由於是從大範圍數轉換為小範圍數,這種轉換是不安全的,如果轉換的數比較大會造成精度的丟失。**第③行uint8(englishscore)是正確的轉換方法。由於本例中englishscore的值是130,這個轉換是成功的,如果把這個數修改為1300,雖然程式編譯沒有問題,但是會在控制台中輸出異常資訊,這是執行期異常。

上述**中,uint16(historyscore)和uint8(englishscore)事實上是構造器,能夠建立並初始化另外乙個型別。關於構造器的內容,我們會在第14章詳細介紹。

二、整型與浮點型之間的轉換

整型與浮點型之間的轉換與整型之間的轉換類似,因此我們將上一節的示例修改如下:

[html]view plain

copy

let 

historyscore:float

= 90

.6           ①  

let englishscore:uint16

= 130

②  let totalscore

= historyscore

+ englishscore  //錯誤          ③  

let totalscore

= historyscore

+ float(englishscore)  //正確,安全    ④  

let totalscore

= uint16

(historyscore) + englishscore  //正確,小數被截掉    ⑤  

上述**經過了一些修改,第①行**historyscore變數型別是float型別。第②行**englishscore變數還是uint16型別。其中第③行**直接進行了計算,結果有編譯錯誤。第④行**是將uint16型別的englishscore變數轉換為float型別,這種轉換是最安全的。第⑤行**是將float型別的historyscore變數轉換為uint16型別,這種轉換首先會導致小數被截掉,另外如果historyscore變數數很大,會導致執行期異常,這與整型之間的轉換是類似的。

《swift開發指南》

本書交流討論**:

歡迎加入swift技術討論群:362298485

Swift 型別轉換

import uikit 1.定義基類 mediaitem 2.定義子類 movie 3.定義子類 song class mediaitem class movie mediaitem class song mediaitem let library movie name movie1 direct...

型別轉換 容器型別之間的轉換

強轉成字串,無非就是在原有的資料的基礎上兩邊套上引號 如果是字串,會把每乙個字元單獨的作為乙個元素放到列表中 如果是字典,只保留鍵,形成一套新的列表 如果是其他的容器,只是單純的在原有資料的基礎上換上 如果是字串,會把每乙個字元單獨的作為乙個元素放到元組中 如果是字典,只保留鍵,形成一套新的元組 如...

Swift內建的數字型別及基本的轉換方法

雖然編寫任何程式語言,需要使用不同的變數來儲存各種資訊。變數不過是保留的記憶體位置來儲存值。這意味著,當建立乙個變數,在記憶體中會保留一些空間。可能喜歡像儲存字串,字元,寬字元,整數,浮點數,布林等各種資料型別的資訊。根據乙個變數的資料型別,作業系統分配記憶體,並決定什麼可以儲存保留在儲存器。內建資...