Swiftで数値と文字列を相互変換!NumberFormatterで桁区切りや通貨表示をわかりやすく解説
生徒
「Swiftで数字を文字列にしたり、文字列を数字に戻したりすることってできますか?」
先生
「はい、できますよ。数値と文字列の変換はとてもよく使う操作です。例えば『1000』という数値を『1,000』のように桁区切りで表示したり、通貨記号を付けて『¥1,000』と表示するのも可能です。」
生徒
「なるほど!それなら買い物アプリや家計簿アプリを作るときに役立ちそうですね。」
先生
「その通りです。では実際に、数値と文字列の変換方法を見ていきましょう!」
1. Swiftで数値を文字列に変換する基本
まずは一番シンプルな「数値から文字列」への変換です。SwiftではString()を使うことで簡単にできます。
let number = 1234
let text = String(number)
print(text)
このコードを実行すると、「1234」という文字列が出力されます。
1234
この方法はシンプルですが、桁区切りや通貨表記はされません。そのため、見やすく整形するにはNumberFormatterを使います。
2. Swiftで文字列を数値に変換する
逆に「文字列から数値」へ変換することもよくあります。ユーザーが入力した数字を計算に使う場合などに必要です。SwiftではInt()やDouble()を使います。
let text = "5678"
if let number = Int(text) {
print(number + 10)
}
このコードでは、文字列「5678」を整数に変換し、さらに「+10」をして「5688」が表示されます。
5688
もし文字列が数字でない場合はnil(値がないことを示す特別なもの)になるので、if letで安全に扱うのがポイントです。
3. NumberFormatterで桁区切り表示
大きな数字を見やすくするには「桁区切り」が便利です。人間が読むときに「1000000」よりも「1,000,000」のほうがわかりやすいですよね。SwiftではNumberFormatterを使って自動的に桁区切りを入れられます。
import Foundation
let number = 1234567
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
if let formatted = formatter.string(from: NSNumber(value: number)) {
print(formatted)
}
このコードを実行すると「1,234,567」と表示されます。numberStyle = .decimalと指定するだけで、自動で桁区切りが入ります。
1,234,567
4. NumberFormatterで通貨表示
次に「通貨表示」です。家計簿アプリやショッピングアプリで「¥」「$」などをつけたいときに便利です。
let price = 2500
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.currencyCode = "JPY"
if let formatted = formatter.string(from: NSNumber(value: price)) {
print(formatted)
}
このコードを実行すると「¥2,500」と表示されます。currencyCodeを「USD」にすればドル「$」、EURにすればユーロ「€」として表示されます。
¥2,500
5. 実生活の例えで理解しよう
桁区切りや通貨表示は、実生活の「値札」や「レシート」と同じです。例えばスーパーで「1000円」とだけ書かれているより「¥1,000」と書かれていた方が見やすく、誤解が少なくなります。プログラミングでも同じで、ユーザーに数字を見やすく提示することはとても大切です。
6. まとめて実践コード
最後に、今回紹介した数値と文字列の変換、桁区切り、通貨表示をまとめて使ったサンプルを紹介します。
import Foundation
let text = "3000"
// 文字列を数値に変換
if let number = Int(text) {
print("数値に変換: \(number)")
// 数値を文字列に変換
let stringValue = String(number)
print("文字列に変換: \(stringValue)")
// 桁区切り表示
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
if let formatted = formatter.string(from: NSNumber(value: number)) {
print("桁区切り: \(formatted)")
}
// 通貨表示(日本円)
formatter.numberStyle = .currency
formatter.currencyCode = "JPY"
if let currency = formatter.string(from: NSNumber(value: number)) {
print("通貨表示: \(currency)")
}
}
実行すると次のように表示されます。
数値に変換: 3000
文字列に変換: 3000
桁区切り: 3,000
通貨表示: ¥3,000
まとめ
Swiftで数値と文字列を扱う重要性の振り返り
ここまで、Swiftにおける数値と文字列の相互変換について、基礎から実践的な使い方まで段階的に学んできました。 アプリ開発では、内部処理としては数値型で計算を行い、画面に表示する際には文字列として見やすく整形する場面が非常に多くあります。 例えば、ユーザーが入力した金額、商品の価格、合計金額、ポイント数、スコア表示など、ほぼすべてのアプリで数値と文字列の変換は欠かせません。
単純に String() や Int() を使うだけでも変換は可能ですが、それだけでは実用的とは言えません。
桁区切りがない数字は読みにくく、通貨記号がない金額は誤解を生む可能性があります。
そこで登場するのが NumberFormatter です。
NumberFormatterを使うことで、桁区切り、通貨表示、小数点の扱いなどを柔軟に制御でき、ユーザーにとって直感的で理解しやすい表示を実現できます。
NumberFormatterを使うメリット
NumberFormatterは、SwiftやiOSアプリ開発において非常に強力なクラスです。 桁区切りの有無、通貨の種類、ロケールによる表示形式の違いなどを自動で処理してくれるため、開発者が細かい文字列操作を行う必要がありません。 特に家計簿アプリ、ショッピングアプリ、売上管理アプリ、予約システムなどでは、金額表示の正確さと見やすさがユーザー体験に直結します。
また、文字列から数値へ変換する際に if let を使って安全に処理する考え方も重要なポイントでした。
ユーザー入力は必ずしも正しい数値とは限らないため、nilを考慮した安全な実装がアプリの品質を高めます。
こうした基本を理解しておくことで、エラーの少ない堅牢なSwiftコードを書くことができるようになります。
まとめて確認するサンプルプログラム
ここで改めて、数値と文字列の変換、桁区切り、通貨表示を一連の流れとして確認できるサンプルを掲載します。 記事内で使用してきたクラスや書き方と同じ構成になっているため、復習としても役立ちます。
import Foundation
let inputText = "12000"
// 文字列を数値に変換
if let value = Int(inputText) {
// 数値をそのまま文字列に変換
let simpleString = String(value)
print("そのまま表示: \(simpleString)")
// 桁区切り表示
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
if let decimalString = formatter.string(from: NSNumber(value: value)) {
print("桁区切り表示: \(decimalString)")
}
// 通貨表示
formatter.numberStyle = .currency
formatter.currencyCode = "JPY"
if let currencyString = formatter.string(from: NSNumber(value: value)) {
print("通貨表示: \(currencyString)")
}
}
このように、一つの数値データを用途に応じて表示形式を変えることで、アプリの使いやすさは大きく向上します。 Swiftの基本構文とあわせて、NumberFormatterの使い方をしっかり身につけておくことが重要です。
生徒
「最初は数字を文字列に変換するだけなら簡単だと思っていましたが、実際には表示の仕方がとても大事なんですね。 桁区切りや通貨記号があるだけで、すごく見やすくなると実感しました。」
先生
「その気づきはとても大切ですよ。 プログラミングでは計算結果が正しいだけでなく、ユーザーにどう見せるかも重要です。 NumberFormatterを使えば、その部分を簡単に、しかも安全に実装できます。」
生徒
「文字列から数値に戻すときに、if letで安全に処理する理由もよく分かりました。 ユーザー入力をそのまま信用しないという考え方は、他の場面でも使えそうですね。」
先生
「その通りです。 Swiftの基本文法と一緒に、こうした考え方を身につけていけば、 実用的なiOSアプリやSwiftUIアプリを自信を持って作れるようになりますよ。」
生徒
「これからは金額表示や数値表示を見るたびに、裏側でNumberFormatterが動いているのを意識してみます。 もっとSwiftの基礎を学びたくなりました!」