“`markdown
# Swift 2025 教學:千分位金錢價格格式化與最佳實踐
在金融商品、價格和價位等有關金錢的數字中,通常會使用標點符號分隔,稱為千分位符號(或千位分隔符),能有效提高可讀性。例如:10000 轉換為 10,000。
## 使用 NumberFormatter 進行千分位格式化
在 Swift 中,我們可以使用 `NumberFormatter` 類別來格式化金額。以下示範了如何使用最新的語法來實現千分位格式化。
### 格式化整數金額
“`swift
let money: Int = 1_000_000 // 一百萬
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 0
if let formattedMoney = formatter.string(from: NSNumber(value: money)) {
print(formattedMoney) // 輸出:1,000,000
}
“`
### 格式化帶小數的金額
“`swift
let moneyWithDecimal: Double = 1_000_000.123456 // 一百萬
formatter.maximumFractionDigits = 2 // 小數點保留兩位
if let formattedMoneyWithDecimal = formatter.string(from: NSNumber(value: moneyWithDecimal)) {
print(formattedMoneyWithDecimal) // 輸出:1,000,000.12
}
“`
## 各種金錢樣式
`NumberFormatter` 支援多種金錢樣式,以下是一些示範:
“`swift
formatter.numberStyle = .currency
print(formatter.string(from: NSNumber(value: money))!) // 輸出:$1,000,000
formatter.numberStyle = .currencyAccounting
print(formatter.string(from: NSNumber(value: money))!) // 輸出:$1,000,000
formatter.numberStyle = .currencyISOCode
print(formatter.string(from: NSNumber(value: money))!) // 輸出:TWD 1,000,000
formatter.numberStyle = .currencyPlural
print(formatter.string(from: NSNumber(value: moneyWithDecimal))!) // 輸出:1,000,000.00 新台幣
“`
## 支援多種語言的格式化
您可以透過設定 `locale` 來支援不同語言的格式化。以下是一些範例:
“`swift
let locales = [“ja_JP”, “zh_TW”, “en_MT”, “fil_PH”]
for localeIdentifier in locales {
formatter.locale = Locale(identifier: localeIdentifier)
formatter.numberStyle = .currency
if let formatted = formatter.string(from: NSNumber(value: money)) {
print(“\(localeIdentifier) 格式化:\(formatted)”)
}
}
“`
## 錯誤排除
在進行數字格式化時,可能會遇到一些常見錯誤,例如:
– 確保傳入 `NSNumber` 物件的數字類型正確。
– 檢查 `formatter` 的屬性是否正確設定。
## 延伸應用
`NumberFormatter` 還可以用於其他數字的格式化,如百分比、科學記數法等。這使得它在數據表示方面非常靈活。
“`swift
formatter.numberStyle = .percent
print(formatter.string(from: NSNumber(value: 0.1))!) // 輸出:10%
“`
## 結尾
希望這篇文章能幫助您了解如何在 Swift 中使用 `NumberFormatter` 來格式化金額。如果有任何問題,請參考以下的常見問題解答。
—
## Q&A(常見問題解答)
**1. 如何調整小數點位數?**
您可以使用 `maximumFractionDigits` 屬性來設置小數點後的位數。
**2. `NumberFormatter` 支援哪些格式化樣式?**
`NumberFormatter` 支援多種格式化樣式,包括 decimal、currency、percent 等。
**3. 如何支援不同語言的數字格式?**
您可以使用 `locale` 屬性設置所需的語言和地區,`NumberFormatter` 會根據這些設定自動調整格式。
“`
—