🔡

SwiftでDecimal型の整数をカンマ区切りの文字列にする

2023/08/08に公開

もともとDecimal型ということがあまりないかもですが。
一旦NSDecimalNumberにしてからIntにしてString.localizedStringWithFormat(,)に渡してやるとできます。

let intValue = Decimal(1_234_567)

String.localizedStringWithFormat("%d", NSDecimalNumber(decimal: intValue).intValue)
// NSDecimalNumberにキャストするだけでもいける
String.localizedStringWithFormat("%d", (intValue as NSDecimalNumber).intValue)

// "1,234,567"
// "1,234,567"

使いやすいようにextension化しておく

extension Decimal {
    var formattedAsIntValue: String {
        String.localizedStringWithFormat("%d", (self as NSDecimalNumber).intValue)
    }
}

奥が深そうなのでとりあえずこれだけ。詳細は参考資料を確認してください。

環境

Xcode 14.3.1
Swift 5.8.1

参考資料

Discussion