Swift 的 NumberFormatter(1)
4 min readOct 28, 2019
之前有紀錄過在iOS的貨幣表示方式的寫法,是使用NumberFormatter 就可以輕鬆地達成,而NumberFormatter的功能其實也非常多,所以這次再來記錄一下其中三種也可能常用的功能
ㄧ. 數字的分組
//先創建一個NSNumber及NumberFormatter
let nsNumber = NSNumber(value: 236428.45)
let formatter = NumberFormatter()
//將格式設定為小數點保留3位第4位四捨五入
formatter.numberStyle = .decimal
let number = formatter.string(from: nsNumber)
print(number!) //印出 236,428.45
也能關閉分組(預設就是開啟)
//關閉數字的分組
formatter.usesGroupingSeparator = false
let number = formatter.string(from: nsNumber)
print(number!) //印出236428.45
也能客製分隔的符號以及位數(記得usesGroupingSeparator不要設定為false)
//分隔的符號
formatter.groupingSeparator = "-"
//分隔的位數
formatter.groupingSize = 2
let number = formatter.string(from: nsNumber)
print(number!) //印出 23-64-28.45
二.數字四捨五入取整數和補齊位數
let nsNumber = NSNumber(value: 236428.45)
let formatter = NumberFormatter()
//四捨五入取整數
formatter.numberStyle = .none
let number = formatter.string(from: nsNumber)
print(number!) //印出 236428
將小數點換成.54,會將小數點四捨五入
let nsNumber = NSNumber(value: 236428.54)
let formatter = NumberFormatter()
//四捨五入取整數
formatter.numberStyle = .none
let number = formatter.string(from: nsNumber)
print(number!) //印出236429
如果有特定位數可以使用不足補齊功能
let nsNumber = NSNumber(value: 236428.54)
let formatter = NumberFormatter()
//四捨五入取整數
formatter.numberStyle = .none
//補到12位數
formatter.formatWidth = 12
//不足用0補
formatter.paddingCharacter = "0"
let number = formatter.string(from: nsNumber)
print(number!) //印出 000000236429 預設好像補在前面
位數不足也可以補在後面
//補齊位數的位置
formatter.paddingPosition = .afterSuffix
let number = formatter.string(from: nsNumber)
print(number!) //印出 236429000000
三.前綴後綴字
let nsNumber = NSNumber(value: 236428.54)
let formatter = NumberFormatter()
//四捨五入取整數
formatter.numberStyle = .none
//加入前綴字
formatter.positivePrefix = "新台幣 "
//加入後綴字
formatter.positiveSuffix = " 元"
let number = formatter.string(from: nsNumber)
print(number!) //印出 新台幣 236429 元