Swift的貨幣表示(使用NumberFormatter)
3 min readAug 25, 2019
最近公司的專案突然要將數字的顯示加上千分位的”,”號,所以也就順便記錄一下,因為好像很常用,可是又不常用…哈哈😂
在 Swift 裡面關於字串的顯示格式,基本上使用 NumberFormatter 這個類別完來幾乎就可以完成自己想要的顯示格式,而且使用起來真的都超級簡單,只要幾行就結束了。
假設要格式化的數字是以下
var myNumber = 7533967
再創建一個formate
let formate = NumberFormatter()
像我的需求是要顯示千分位”,”也就是貨幣的顯示方式
那就設定一下 formate 的 numberStyle,而且 Apple 已經為這個 numberStyle 建立了一個 enum,基本上看文字敘述就大概知道是什麼,只要選擇一下就好了,就不多介紹。
formate.numberStyle = .currency
最後使用這個 formate 來格式化,因為裡面要放 NSNumber 所以要使用 NSNumber 來轉型。
let myNFormate = formate.string(from: NSNumber(value: myNumber))
最後輸出來看看
print(myNFormate!) //$7,533,967.00
基本上就完成了…但是有小數點好像怪怪的,放心,Apple當然也沒那麼笨..只要設定要顯示小數點幾位就可以了
formate.numberStyle = .currency
formate.maximumFractionDigits = 0let myNFormate = formate.string(from: NSNumber(value: myNumber))print(myNFormate!) //$7,533,967
再順便記錄一下其他的顯示會是怎樣
formate.numberStyle = .currencyPlural //7,533,967.00 US dollars
formate.numberStyle = .currencyISOCode //USD7,533,967.00.
formate.numberStyle = .currencyAccounting //$7,533,967.00
對了,此顯示格式會自動抓取使用者手機內的設定,所以台灣就會看到是新台幣格式,不用自己做設定,但是如果要自己做設定,只要設定 formate的 locoal 就可以囉,像以下
formate.numberStyle = .currencyISOCode
formate.locale = Locale(identifier: "zh_TW")
let myNFormate = formate.string(from: NSNumber(value: myNumber))print(myNFormate!) //TWD7,533,967.00
這次就先記錄有關貨幣的顯示,其實 NumberFormatter 還有超多可以用,之後再來看看囉。