程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Swift內置的數字類型及根本的轉換辦法

Swift內置的數字類型及根本的轉換辦法

編輯:更多關於編程

Swift內置的數字類型及根本的轉換辦法。本站提示廣大學習愛好者:(Swift內置的數字類型及根本的轉換辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Swift內置的數字類型及根本的轉換辦法正文


固然編寫任何編程說話,須要應用分歧的變量來存儲各類信息。變量不外是保存的內存地位來存儲值。這意味著,當創立一個變量,在內存中會保存一些空間。

能夠愛好像存儲字符串,字符,寬字符,整數,浮點數,布爾等各類數據類型的信息。依據一個變量的數據類型,操作體系分派內存,並決議甚麼可以存儲保存在存儲器。

內置數據類型
Swift 為法式員供給內置和用戶界說的品種數據類型。 以下是聲明變量應用最頻仍的根本數據類型的列表:

Int 或 UInt - 這是用於整數。更詳細地可使用Int32,Int64來界說32或64位有符號整數,個中作為UInt32或UInt64用來界說32或64位無符號整數的變量。 For example, 42 and -23.

  • Float - 這是用來表現一個32位浮點數,普通用於應用較小的小數點數字。 例如:3.14159,0.1,和 -273.158。
  • Double - 這是用來表現一個64位浮點數,用於異常年夜的浮點值。  例如: 3.14159, 0.1, 和 -273.158.
  • Bool - 這代表一個布爾值,真或假。
  • String - 這是有序字符聚集。例如, "Hello, World!"
  • Character - 這是一個單字符字符串。例如, "C"
  • Optional - 這表現可以包容一個值或沒有任何值的變量。

有以下有關整數類型要點:

  • 在32位的平台上,Int 年夜小與 Int32 的年夜小雷同。
  • 在64位的平台上,Int 年夜小與 Int64 的年夜小雷同。
  • 在32位的平台上,UInt 的年夜小與 UInt32 的年夜小雷同。
  • 在 64 位的平台上,UInt 的年夜小與 UInt64 的年夜小雷同。
  • Int8, Int16, Int32, Int64 可以用來表現 8 Bit, 16 Bit, 32 Bit 和 64 Bit 構成有符號整數。

UInt8, UInt16, UInt32 和 UInt64 可以用來表現 8 Bit, 16 Bit, 32 Bit 和 64 Bit 構成無符號整數。
綁定值
下表顯示變量類型,須要若干內存存儲此值在存儲器中,在這類類型的變量可以存儲最年夜值和最小值。

類型別號
可以從現有類型應用typealias創立一個新的稱號。以下是應用簡略 typealias 的語法來界說新類型:

typealias newname = type
例如,上面告知編譯器Feet 是 Int 的另外一個名字:

typealias Feet = Int
如今,上面的聲明是完整正當的,並創立一個整型變量為 distance:

import Cocoa

typealias Feet = Int
var distance: Feet = 100
println(distance)
當我們應用 playground 運轉下面的法式,到以下成果。

100

類型平安
Swift 是一種平安的說話,這意味著,假如代碼的一部門須要一個字符串, 那末不克不及毛病地傳遞一個int。

因為 Swift 是類型平安的,當類型檢討時它履行編譯代碼並標記類型不婚配的毛病。

import Cocoa

var varA = 42
varA = "This is hello"
println(varA)
當我們編譯下面的法式它發生以下編譯時毛病。

Playground execution failed: error: :6:6: error: cannot assign to 'let' value 'varA'
varA = "This is hello"
類型揣摸
在它編譯代碼時,類型揣摸使編譯器主動推導出特定表達式的類型, 簡略地經由過程檢討所供給的值。Swift 采取類型揣摸制訂出適合的類型以下。

 import Cocoa

// varA is inferred to be of type Int
var varA = 42
println(varA)

// varB is inferred to be of type Double
var varB = 3.14159
println(varB)

// varC is also inferred to be of type Double
var varC = 3 + 0.14159
println(varC)
當我們應用 playground 運轉下面的法式,獲得以下成果。

42
3.14159
3.14159

Swift數字類型之間的轉換
Swift數字類型之間的轉換Swift是一種平安的說話,關於類型的檢討異常嚴厲,分歧類型之間不克不及隨意轉換。
1、整型之間的轉換
在C和Objective-C等其他說話中,整型之間有兩種轉換辦法:
從小規模數到年夜規模數轉換是主動的;
從年夜規模數到小規模數須要強迫類型轉換,有能夠形成數據精度的喪失。
而在Swift中這兩種辦法是行欠亨的,我們須要經由過程一些函數停止顯式地轉換,代碼以下:

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)現實上是結構器,可以或許創立並初始化別的一個類型。2、整型與浮點型之間的轉換
整型與浮點型之間的轉換與整型之間的轉換相似,是以我們將上一節的示例修正以下:

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變量數很年夜,會招致運轉期異常,這與整型之間的轉換是相似的。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved