Swift 數字變字串的轉換(number to string)

開發 iOS App 時,我們時常需要將數字變成字串顯示在 App 上,以下介紹四種 Swift 數字變字串的方法:

  • 方法 1: string interpolation \( )
  • 方法 2: String( )
  • 方法 3: 呼叫 function formatted (iOS 15 以上)
  • 方法 4: 讀取 property description

方法 1: string interpolation \( )

let number = 3.14159
let message = "\(number)"

得到字串 "3.14159"

方法 2: String( )

let number = 3.14159
let message = String(number)

得到字串 "3.14159"

若想指定小數點位數,可搭配參數 format。

let number = 3.14159
let message = String(format: "%.3f", number)

得到字串 "3.142",%.3f 表示到小數點第三位,將第四位的數字四捨五入,因此 3.14159 變成 3.142。

方法 3: 呼叫 function formatted (iOS 15 以上)

從 iOS 15 開始,數字可以直接呼叫 function formatted 得到字串。

let number = 3.14159
let message = number.formatted()

得到字串 "3.14159"

formatted 十分厲害,它可以把數字變成各種我們想要的字串格式,接下來讓我們看看幾種不同的例子。

  • 指定小數點位數
let number = 3.14159
let message = number.formatted(.number.precision(.fractionLength(3)))

得到字串 "3.142",傳入 .number.precision(.fractionLength(3)) 表示到小數點第三位,將第四位的數字四捨五入,因此 3.14159 變成 3.142。

  • 將浮點數變成整數字串
let number = 3.54159
let message = number.formatted(.number.precision(.fractionLength(0)))

得到字串 "4",fractionLength 傳入 0,因此不會顯示小數點後的數字。值得注意的,浮點數變成整數時會四捨五入,因此 3.54159 變成 4。

  • 指定數字是否分組
let number = 1234
let message = number.formatted()

以上程式將得到字串 "1,234",因為 Swift 貼心地幫我們將數字每三位加逗號,方便使用者閱讀。不過如果你不想領情,不想加逗號,也是可以,可傳入 .number.grouping(.never)

let number = 1234
let message = number.formatted(.number.grouping(.never))

得到字串 "1234"

  • 將數字變成百分比字串
let number = 0.323
let message = number.formatted(.percent)

得到字串 "32.3%"

  • 將數字變成我們最愛的金錢字串
let number = 99
let message = number.formatted(.currency(code: "JPY"))

得到字串 "¥99"

  • 指定數字進位的規則
let number = 3.34159
let message = number.formatted(.number.rounded(rule: .up, increment: 1))

得到字串 "4" ,傳入 .number.rounded(rule: .up, increment: 1) 表示變成整數,變成較大的數字,因此 3.3 變成 4。

let number = 3.38159
let message = number.formatted(.number.rounded(rule: .down, increment: 0.1))

得到字串 "3.3" ,傳入 .number.rounded(rule: .down, increment: 0.1) 表示顯示到小數點第一位,變成較小的數字,因此 3.38159 變成 3.3。

除了 up,down,還有 awayFromZero,toNearestOrAwayFromZero,toNearestOrEven & towardZero 可以選擇。

方法 4: 讀取 property description

let number = 3.14159
let message = number.description

得到字串 "3.14159"

--

--

彼得潘的 iOS App Neverland
彼得潘的 Swift iOS App 開發問題解答集

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com