Swift入門(九)——String與Int、Double、Float等數字相互轉換

來源:互聯網
上載者:User

標籤:swift   string   int   轉換   float   

三種轉換模式

任何語言裡面,Int、float、double等數字類型自成一派,但它們和String類型之間的轉換總是不太方便,這裡總結一下它們相互轉換的方法。總結下來一共有三種轉換模式,分別舉例說明。

一、String轉數字

這裡以String類型轉Int類型為例。String轉其他的數字類型(Float、Double等)大同小異。主要用到的方法是String類型的toInt方法。注意這個方法返回的是Int?,即一個整數可選類型。所以需要解鎖。

var string = "1234"var n:Int = 0if let number = string.toInt(){    n = number}

這樣就得到了值為1234的的Int類型變數n。其實一開始我曾經想過,如果n沒有值(也就是說還沒有被賦值為0),解鎖又失敗了,那麼println(n)的結果會是什麼呢,預設為0嗎?

不過仔細思考後發現,這種情況是不可能發生的。Swift是不會允許我們使用一個還沒有初始化的變數的。否則編譯器會報錯:

Variable ‘n’ used before being initialized

有點扯遠了,當然也可直接使用

var n = string.toInt()!

不過強烈不建議這麼用。即使你非常確定String一定是可以轉成Int的。

二、數字轉String

這裡以Double類型轉換String為例。比較一種簡單的寫法如下:

var number = 123.5var string = "\(number)"

這樣就得到了值為”123.5”的String類型變數string。不過如果要寫成一個方法,使得number作為參數傳遞進來的話,這種簡寫就不行了。我們可以利用String類型的初始化方法。

var number = 123.5var string = String(stringInterpolationSegment: number)

之所以拿Double類型來寫是因為,如果number是Int類型,直接調用String(number)即可產生一個String類型的變數,而現在的number是Double類型,所以需要顯式的加上外部變數名stringInterpolationSegment。這種寫法對於Int類型依然成立,不過稍顯麻煩,不過少了這個外部變數名,就無法將Double轉為String了。

個人比較推薦第二種寫法。

三、數字之間互轉

瞭解數字和String如何轉換之後,最後看一下最簡單的數字類型之間的互轉。這裡以Double轉Int為例。

和C、Java、OC等語言類似,可以使用強制類型轉換的方式:

var doubleNumber = 1.8var intNumber = 0intNumber = Int(doubleNumber)println(intNumber)

這裡的輸出結果是1.也就是說doubleNumber不是四捨五入,而是精度丟失了。

或者使用嚴謹一點的構造方法來寫:

var doubleNumber = 1.8var intNumber = 0intNumber = Int(doubleNumber)println(intNumber)

輸出結果依然是1

附錄查看完整專欄——《Swift輕鬆入門》

【Swift入門(一)——基本文法】
【Swift入門(二)——字元與字串】
【Swift入門(三)——元組(Tuple)】
【Swift入門(四)——可選類型(Optionals)與斷言(Assert)】
【Swift入門(五)——數組(Array)】
【Swift入門(六)——字典(Dictionary)】
【Swift入門(七)——結構體(Struct)】
【Swift入門(八)——功能強大的求餘運算子】
【Swift入門(九)——String與Int、Double、Float等數字相互轉換】

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Swift入門(九)——String與Int、Double、Float等數字相互轉換

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.