整数と浮動小数点数を操作する
このチュートリアルでは、ブラウザーを利用し、対話形式で C# の数値型について説明します。 C# を記述し、コードをコンパイルおよび実行して結果を確認します。 このチュートリアルには、C# の数値と算術演算に関する一連のレッスンが含まれています。 これらのレッスンでは、C# 言語の基本を説明します。
ヒント
フォーカス モード内にコード スニペットを貼り付けるには、キーボード ショートカット (Ctrl + v、または cmd + v) を使用する必要があります。
整数の演算の確認
対話型ウィンドウで次のコードを実行します。 [Enter focus mode](フォーカス モードを入力する) ボタンを選択します。 次に、対話型ウィンドウで次のコード ブロックを入力し、[実行] を選択します。
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
自分の環境で作業している場合は、代わりにローカル バージョンに関する指示に従ってください。
整数を使用した基本的な算術演算の 1 つを確認しました。 int
型は、整数を表します (正の整数、または負の整数)。 加算には +
記号を使用します。 他の一般的な整数の算術演算には次のものがあります。
-
: 減算*
: 乗算/
: 除算
ヒント
この対話型チュートリアルでは、対話型ウィンドウで作成したコードを変更して、自分で確認できます。 このチュートリアルでは、各ステップで実際に試すことができる例を用意しています。
まずは、上記の各種演算を実行してみます。 3 行目を変更して、各演算を試します。 編集が終わるごとに、[実行] ボタンを選択します。
減算:
int c = a - b;
乗算:
int c = a * b;
除算:
int c = a / b;
必要であれば、同じ行で複数の算術演算を記述することもできます。
ヒント
C# (または何らかのプログラミング言語) について詳しく学習するに従い、コードを記述する際にミスをすることもあるでしょう。 コンパイラは、そうしたエラーを発見して報告します。 エラー メッセージが出力された場合は、例のコードをよく確認して、対話型ウィンドウで修正すべきコードを見つけます。 こうした実習が C# コードの構造を理解するのに役立ちます。
演算の順序の確認
C# 言語は、数学で学んだ規則と同じ規則で各演算の優先順位を定義します。 乗算と除算は、加算と減算よりも優先されます。 対話型ウィンドウで次のコードを実行して、実際に確認しましょう。
int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);
出力を見ると、加算の前に乗算が実行されていることがわかります。
演算の周りに丸かっこを追加する、または最初に実行したい演算を追加することで、演算の順序を変えることができます。
int a = 5;
int b = 4;
int c = 2;
int d = (a + b) * c;
Console.WriteLine(d);
さまざまな演算を多数組み合わせて、他にも試してみましょう。 上記の 4 行目を次のように置き換えます。
int d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
整数について面白い動作をしていることに気づいたでしょうか。 結果に小数点や小数部分が含まれると予想される場合でも、整数の除算は常に整数の結果を算出します。
この動作を確認できない場合は、次のコードを試してください。
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
Console.WriteLine(d);
もう一度 [実行] を選択して結果を確認します。
整数の有効桁数と制限の確認
この最後のサンプルでは、整数の除算における結果の切り捨てについて確認します。
remainder 演算子 (%
文字) を使用して、リマインダーを得ることができます。
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
int e = (a + b) % c;
Console.WriteLine($"quotient: {d}");
Console.WriteLine($"remainder: {e}");
C# の整数型は算術における整数ともう 1 つ異なる点があります。それは int
型には最小値と最大値の制限があるということです。 対話型ウィンドウでこのコードを実行し、これらの制限を確認しましょう。
int max = int.MaxValue;
int min = int.MinValue;
Console.WriteLine($"The range of integers is {min} to {max}");
計算によってこれらの制限を超える値が作られると、アンダーフローまたはオーバーフローの状態になります。 計算の結果が 1 つの制限からもう 1 つの制限に折り返されているように見えます。 対話型ウィンドウに次の 2 行を追加して、例を確認します。
int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");
計算の結果が最小値の (負の) 整数に極めて近いことに注目してください。 これは min + 2
と同じです。
加算演算が許容された整数値をオーバーフローしました。
整数がオーバーフローして最大値から最小値に ”折り返され” たため、計算結果が非常に大きな負の値になっています。
他にもさまざまな制限や有効桁数を持つ数値型があり、int
型がご自分のニーズと合わない場合は、そちらも使用できます。 次に、数値の型について確認しましょう。
double 型の処理
double
数値型は、倍精度浮動小数点数を表します。 こうした用語を初めて見た人もいるかもしれません。 浮動小数点数は、非常に大きな、または非常に小さな、整数ではない数値を表すのに役立ちます。 倍精度は、値の保管に使用される二進数の数値を表す相対語です。 倍精度数値は、単精度に比べ、二進数の数値が 2 倍になります。 最近のコンピューターでは、単精度よりも倍精度の数値を使用する方が一般的です。 単精度数値は、float
キーワードを使用して宣言されます。
確認してみましょう。 対話型ウィンドウで次のコードを実行して結果を確認します。
double a = 5;
double b = 4;
double c = 2;
double d = (a + b) / c;
Console.WriteLine(d);
計算結果に商の小数部分が含まれていることに注目してください。 double 型を使用して、もう少し複雑な式を試します。
double a = 19;
double b = 23;
double c = 8;
double d = (a + b) / c;
Console.WriteLine(d);
double 値は整数値よりも範囲が大きくなります。 対話型ウィンドウで次のコードを実行します。
double max = double.MaxValue;
double min = double.MinValue;
Console.WriteLine($"The range of double is {min} to {max}");
これらの値は指数表記で出力されます。 E
の左側は有効数字です。 右側の数値は指数であり、10 の累乗です。
算術における 10 進数と同じように、C# における double には丸め誤差が発生することがあります。 次のコードを試してみましょう。
double third = 1.0 / 3.0;
Console.WriteLine(third);
0.3
は 3/10
であり、1/3
とまったく同じではありません。 同様に、0.33
は 33/100
です。 1/3
に近いですが、それでもまったく同じではありません。
課題
double
型を使用して、大きい値や小さい値、乗算、除算などの計算してみましょう。 もっと複雑な計算を試してみてください。
10 進型を扱う
C# の基本的な数値型である整数と double について見てきました。 もう 1 つ知っておくべき型として、decimal
型があります。 decimal
型は、double
型よりも範囲は小さいですが、有効桁数が大きい型です。 では、始めましょう。
decimal min = decimal.MinValue;
decimal max = decimal.MaxValue;
Console.WriteLine($"The range of the decimal type is {min} to {max}");
double
型よりも範囲が小さいことに注目してください。 次のコードを実行すると、decimal 型では有効桁数がより大きいことを確認できます。
double a = 1.0;
double b = 3.0;
Console.WriteLine(a / b);
decimal c = 1.0M;
decimal d = 3.0M;
Console.WriteLine(c / d);
decimal 型を使用した演算では、小数点の右側の桁数がより多いことに注目してください。
数値の末尾の M
は、定数では decimal
型を使用する必要があることを示しています。 それ以外の場合、コンパイラは double
型を想定します。
注意
文字 M
は、double
キーワードと decimal
キーワードの間で最も視覚的に区別される文字として選択されています。
課題
さまざまな数値型を確認したので、次は半径が 2.50 センチメートルの円の面積を計算するコードを記述してみます。 円の面積は、半径の 2 乗 x 円周率です。 ヒント: .NET には Math.PI という円周率の定数があり、その値を使用できます。 Math.PI は、System.Math
名前空間で宣言されているすべての定数と同様に、double
値です。 そのため、この課題では decimal
値の代わりに double
を使用してください。
答えは 19 と 20 の間になるはずです。
課題完了
コードは次のようになりましたか?
double radius = 2.50;
double area = Math.PI * radius * radius;
Console.WriteLine(area);
お好みで他の数式を試してみてください。
おめでとうございます。
これで "C# の数値" に関する対話型チュートリアルは終了です。 下の分岐とループのリンクを選択することで次の対話式チュートリアルを開始することができます。また、.NET サイトにアクセスして .NET SDK をダウンロードし、ご利用のマシン上でプロジェクトを作成し、コーディングを続けることもできます。 "次の手順" セクションでは、これらのチュートリアルに戻ります。
C# の数値の詳細については、次の記事で学習できます。
このセクションに問題がある場合 このセクションを改善できるよう、フィードバックをお送りください。
.NET