🎉

NumberFormatterで出来ること

2022/07/22に公開

NumberFormatterで出来ること

  • 通貨フォーマット
  • 言語ごとの表記
  • パーセントフォーマット
  • 順序フォーマットなど
  • 桁数の設定

Style Format
decimal 123.4567 -> 123.46
percent 0.123 -> 12%
currency 123 -> ¥123
currencyPlural 123 -> 123 円(123.45 US dollars)
ordinal 3 -> 第123(3rd)
spellOut 123.45 -> 百二十三・四五(one hundred twenty-three point four five)

細かい設定

let numberFormatter = NumberFormatter()

numberFormatter.numberStyle = .decimal // 値の種類を設定 .percent, .decimal

numberFormatter.minimumIntegerDigits = 10 // 最低桁数(桁数が足りなければ0埋めする)
numberFormatter.maximumIntegerDigits = 3 // 最大桁数(上の桁が削られる) (123456 -> 456)

numberFormatter.maximumFractionDigits = 3 // 最大少数桁数
numberFormatter.minimumFractionDigits = 5 // 最小少数桁数((桁数が足りなければ0埋めする)

numberFormatter.maximumSignificantDigits = 2 // 最大桁数(切捨て整数部0埋め) (123.456 -> 120)
numberFormatter.minimumSignificantDigits = 8 // 最小桁数(0埋め) (123.456 -> 123.45600)

numberFormatter.locale = .init(identifier: "en_US") // ロケールの指定

numberFormatter.localizesFormat = false // 通貨シンボルをローカライズするか
numberFormatter.currencyCode = "AUD" // 通貨シンボルを通貨コードで指定

numberFormatter.positivePrefix = "🍏" // 後ろに文字列をつける(+)
numberFormatter.positiveSuffix = "🍎" // 後ろに文字列をつける(+)

numberFormatter.negativePrefix = "🍏" // 後ろに文字列をつける(-)
numberFormatter.negativeSuffix = "🍎" // 後ろに文字列をつける(-)

numberFormatter.positiveFormat = "🍏#.##🍎" // 桁数/文字列をフォーマット(+)
numberFormatter.negativeFormat = "🍏#.##🍎" // 桁数/文字列をフォーマット(-)

numberFormatter.positiveInfinitySymbol = "Infinity" // 無限になった時の表示を設定(+∞)
numberFormatter.negativeInfinitySymbol = "-Infinity" // 無限になった時の表示を設定(-∞)

numberFormatter.currencySymbol = "🍎" // 通貨シンボルを指定 (¥124 -> 🍎124)

numberFormatter.usesGroupingSeparator = true // [,]区切りを別のものに置き換える
numberFormatter.groupingSeparator = "_" // 16,945.53 ->  16_945.53
numberFormatter.currencyGroupingSeparator = "💰" // ¥169,46 -> ¥169💰46
numberFormatter.groupingSize = 2 //[,]区切りの桁数 (316,945.53 -> 1,69,45.53)
numberFormatter.secondaryGroupingSize = 4 // 2回目の区切りからの桁数 (123,456,789,123 -> 12,3456,7891,23)

Discussion