Swift 3初上手編程——整數(shù)和浮點數(shù)

高清學習視頻

Swift里快骗,數(shù)字分為整數(shù)(例如:1 / 10 / 100 / 1000等)和浮點數(shù)(例如:3.14 / 1.44 / 2.71等)表悬。我們先來看整數(shù)寺晌。


整數(shù) - Int & UInt

根據(jù)一個整數(shù)變量占據(jù)的內(nèi)存空間(8 / 16 / 32 / 64-bit)以及整數(shù)是否帶有符號(Unsinged),Swift一共定義了8種不同的整數(shù)類型:

Int8      Int16      Int32       Int64

UInt8     UInt16     UInt32      UInt64 

第一行的四個類型,分別表示8 / 16 / 32 / 64-bit的有符號整數(shù)士鸥,第二行則是對應(yīng)的無符號整數(shù)類型。

但通常谆级,我們不會直接在代碼中使用這些具體的整數(shù)類型烤礁,我們只使用Int來定義有符號整數(shù),使用UInt來定義無符號整數(shù)肥照。Swift編譯器會根據(jù)目標編譯平臺脚仔,把Int或UInt轉(zhuǎn)換成對應(yīng)的整數(shù)類型。例如:

在我們的64位平臺上舆绎,我們分別使用min和max方法玻侥,來查看Int和Int64可以表達的數(shù)值范圍:

Int.min // -9223372036854775808
Int.max // 9223372036854775807

Int64.min // -9223372036854775808
Int64.max // 9223372036854775807

通過上面的對比,我們就能發(fā)現(xiàn)亿蒸,Int和Int64凑兰,它們可以表達的數(shù)值范圍,是一樣的边锁。


整數(shù)的常用表達方式

在Swift里姑食,我們可以使用多種方式來表達一個整數(shù)。包括使用10進制茅坛、16進制音半、8進制则拷、2進制:

//: Number literal

let fifteenInDecimal = 15
let fifteenInHex = 0xF
let fifteenInOctal = 0o17
let fifteenInBinary = 0b1111

以及,我們可以在數(shù)字中曹鸠,使用分隔符:

//: Number literal
let million = 1_000_000

“除非我們所在的硬件平臺有特別明確的需求需要我們使用UInt來定義無符號整數(shù)煌茬, 我們總是應(yīng)該盡可能使用Int來表達所有的整數(shù)類型,哪怕我們確定一個整數(shù)一定是一個非負數(shù)彻桃。 這會給我們減少很多不必要的類型轉(zhuǎn)換的麻煩坛善。”*
——最佳實踐


浮點數(shù) Float & Double

在Swift里邻眷,根據(jù)可以表達的精度范圍眠屎,有兩種不同的浮點數(shù)類型:

  • Float: 最多表達6位精度的浮點數(shù);
  • Double: 至少可以表達15位精度的浮點數(shù)肆饶;

我們用print
分別打印Float和Double:

var oneThirdInFloat: Float = 1/3
var oneThirdInDouble: Double 1/3

print(oneThirdInFloat) // 0.333333
print(oneThirdInDouble) // 0.333333333333333

除了使用常規(guī)的十進制表達浮點數(shù)之外改衩,我們還可以使用科學計數(shù)法。例如驯镊,表示浮點數(shù)PI:

var PI = 0.314e1
PI = 314e-2

“如不是有明確的需求葫督,我們應(yīng)該統(tǒng)一使用Double來定義浮點數(shù)“寤螅”*
——最佳實踐


和數(shù)字有關(guān)的Type Inference

在Swift里橄镜,我們使用一個整數(shù),編譯器會把它推導成Int洒放,使用一個浮點數(shù)蛉鹿,編譯器會把它推導成 Double,例如:

var three = 3
type(of: three) // Int.Type

var zeroPointForteen = 0.14
type(of: zeroPointForteen) // Double.Type

我們可以使用type(of:)
來查看一個變量的類型往湿,從上面的結(jié)果我們就可以看到three的類型是Int妖异, zeroPointForteen的類型是Double。

在Swift里领追,我們可以把不同類型數(shù)字的字面值直接進行運算:

PI = 3 + 0.14
type(of: PI)

我們可以看到他膳,整數(shù)值3和浮點數(shù)0.14可以直接相加,Swift把相加的結(jié)果轉(zhuǎn)換成一個Double绒窑。
但是棕孙,在Swift里,我們不能把不同數(shù)字類型的變量直接進行算數(shù)運算些膨,例如:

PI = three + zeroPointForteen

當對變量進行算數(shù)運算的時候蟀俊,所有變量的類型必須是相同的,如果變量類型不同订雾,我們必須明確將其中的一些變量進行類型轉(zhuǎn)換肢预。像這樣:

PI = Double(three) + zeroPointForteen

從上面的代碼可以看到,我們使用:

Double(Value)

把一個Int類型的three洼哎,"轉(zhuǎn)換"成了浮點數(shù)烫映。在這里沼本,之所以我們要對轉(zhuǎn)換加引號,是因為我們并沒有真的把three的類型從Int轉(zhuǎn)換成Double锭沟,而是用three的值抽兆,初始化了一個新的值為3的Double,并用這個新的Double和zeroPointForteen相加族淮。


What's next?
以上就是我們這一節(jié)的內(nèi)容辫红。在了解了不同整數(shù)和浮點數(shù)定義、用法以及type inference規(guī)則之后瞧筛,在下一節(jié)厉熟,我們將深入一個略顯復雜导盅,但是又非常重要的類型:String较幌。為了可以在unicode環(huán)境下正常工作,Swift中的String在設(shè)計上進行了諸多方面的考量白翻。我們在接下來的幾節(jié)中乍炉,就來了解它們。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滤馍,一起剝皮案震驚了整個濱河市岛琼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌巢株,老刑警劉巖槐瑞,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異阁苞,居然都是意外死亡困檩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門那槽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悼沿,“玉大人,你說我怎么就攤上這事骚灸≡阒海” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵甚牲,是天一觀的道長义郑。 經(jīng)常有香客問我,道長丈钙,這世上最難降的妖魔是什么非驮? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮著恩,結(jié)果婚禮上院尔,老公的妹妹穿的比我還像新娘蜻展。我一直安慰自己,他們只是感情好邀摆,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布纵顾。 她就那樣靜靜地躺著,像睡著了一般栋盹。 火紅的嫁衣襯著肌膚如雪施逾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天例获,我揣著相機與錄音汉额,去河邊找鬼。 笑死榨汤,一個胖子當著我的面吹牛蠕搜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播收壕,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼妓灌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蜜宪?” 一聲冷哼從身側(cè)響起虫埂,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎圃验,沒想到半個月后掉伏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡澳窑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年斧散,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片照捡。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡颅湘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出栗精,到底是詐尸還是另有隱情闯参,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布悲立,位于F島的核電站鹿寨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏薪夕。R本人自食惡果不足惜脚草,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望原献。 院中可真熱鬧馏慨,春花似錦埂淮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至慕趴,卻和暖如春痪蝇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冕房。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工躏啰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耙册。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓给僵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親觅玻。 傳聞我的和親對象是個殘疾皇子想际,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于 Swift 重要這個文檔所包含的準備信息, 是關(guān)于開發(fā)的 API 和技術(shù)的培漏。這個信息可能會改變, 根據(jù)這個文...
    無灃閱讀 4,301評論 1 27
  • Swift 是一門開發(fā) iOS, macOS, watchOS 和 tvOS 應(yīng)用的新語言溪厘。然而,如果你有 C 或...
    XLsn0w閱讀 922評論 2 1
  • 前言 Swift是一門新的適用于iOS牌柄,macOS畸悬,watchOS,tvOS開發(fā)的編程語言珊佣。盡管如此蹋宦,Swift的...
    BoomLee閱讀 1,726評論 0 4
  • 像我這中占有欲極強的人 看到你和別的人在一起有說有笑 我就很生氣 甚至不開心的時候我也會難過的要死 愛上了你 對我...
    蒙娜麗莎的Smile閱讀 894評論 0 0
  • 一場舊時的雨冷冗,傾盆 落盡肝腸寸斷 一切的一切 墜入黑暗 無底的黑暗,沉淪 從地底下散發(fā)出死亡的氣息惑艇,彌漫 奄奄一息...
    水晶心語閱讀 117評論 2 5