数値を相互変換する
キャストとConvertメソッドを学びます。
「数値を相互変換する」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
なぜ変換するのか
異なる数値型は、常に自由に混在させられるとは限りません。ある型の値を別の型に変換しなければならない場合があります。
C# には、暗黙的な変換、明示的なキャスト、Convert クラス、テキストからのパースが用意されています。このレッスンでは、それぞれについて学びます。
暗黙的な変換
変換先の型が変換元の取り得るすべての値を保持できる場合、C# は追加の構文なしで暗黙的に変換します。
int は double に収まるため、この代入は自動的かつ安全に行われます。
int whole = 7;
double real = whole;
Console.WriteLine(real);明示的なキャスト
逆方向の変換ではデータが失われる可能性があるため、C# では変換先の型を括弧で指定する明示的なキャストが必要です。
double を int にキャストすると、小数部分は0に近づく方向に切り捨てられます。
double price = 9.99;
int dollars = (int)price;
Console.WriteLine(dollars);キャストでオーバーフローが起きる場合
変換先の型に収まらない値をキャストすると、オーバーフローによって誤った結果になることがあります。
大きな long を int にキャストすると値が巡回するため、必ず値が収まることを確認してください。
long big = 3000000000;
int small = (int)big;
Console.WriteLine(small);Convert クラス
System.Convert クラスには、Convert.ToInt32 や Convert.ToDouble などのメソッドがあり、型同士を変換できます。
キャストとは異なり、Convert.ToInt32 は double の小数部分を切り捨てず、最も近い整数に丸めます。
double value = 9.99;
int rounded = Convert.ToInt32(value);
Console.WriteLine(rounded);テキストから数値をパースする
ユーザー入力やファイルの内容は、string として受け取ります。int.Parse や double.Parse を使って、テキストを数値に変換します。
テキストが有効な数値でない場合、パースによって例外がスローされます。
string text = "42";
int number = int.Parse(text);
Console.WriteLine(number + 8);TryParse による安全なパース
int.TryParse は変換を試み、例外をスローする代わりに true または false を返します。パースされた値は out パラメーターを通じて返されます。
信頼できない入力を扱う場合に適した安全な方法です。
bool ok = int.TryParse("abc", out int result);
Console.WriteLine(ok);
Console.WriteLine(result);数値を文字列に変換する
すべての数値型には、テキストを生成する ToString メソッドがあります。書式文字列を渡して、表示形式を制御できます。
"C"通貨"F2"小数点以下2桁の固定小数点"N0"3桁区切り
double amount = 1234.5;
Console.WriteLine(amount.ToString("F2"));
Console.WriteLine(amount.ToString("N0"));除算のための int から double への変換
変換を行うよくある理由の1つは、整数除算を避けることです。小数部分を保持するには、除算の前に一方のオペランドを double にキャストします。
キャストしない場合、小数部分が切り捨てられた整数の結果になります。
int scored = 7, total = 10;
double percent = (double)scored / total * 100;
Console.WriteLine(percent);キャストと Convert と Parse の違い
適切な方法を選びましょう。
- Cast:数値型同士を変換します(切り捨て)
- Convert:多くの型の間で変換します(丸め、null の処理に対応)
- Parse / TryParse:テキストを数値に変換します
制御できない入力には、TryParse を使用してください。
変換の例
この完全なプログラムでは、テキストから数値を読み取り、変換して計算し、結果を通貨形式で出力します。
string input = "19.95";
if (decimal.TryParse(input, out decimal price))
{
decimal withTax = price * 1.20m;
Console.WriteLine(withTax.ToString("F2"));
}理解度チェック
ユーザーが入力したテキストを数値に変換する、安全な方法を選びましょう。
まとめ
数値の変換について学びました。安全な場合の暗黙的な変換、明示的なキャスト(切り捨てが行われ、オーバーフローする可能性があります)、丸めを行う Convert クラス、Parse とより安全な TryParse によるテキストのパースについて確認しました。
また、ToString の書式コードを使って、数値を文字列に戻す方法も学びました。整数除算を避けるには、一方のオペランドを double にキャストします。
よくある質問
「数値を相互変換する」レッスンは無料ですか?
はい。「数値を相互変換する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「数値を相互変換する」で何を学びますか?
キャストとConvertメソッドを学びます。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「数値を相互変換する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。