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"
。