次の方法で共有


C で整数と浮動小数点数を使用する方法#

このチュートリアルでは、C# の数値型について説明します。 少量のコードを記述した後、そのコードをコンパイルして実行します。 このチュートリアルには、C# の数値と算術演算を調べる一連のレッスンが含まれています。 これらのレッスンでは、C# 言語の基礎について説明します。

ヒント

コード スニペット ブロックに [実行] ボタンが含まれている場合、そのボタンによって対話型ウィンドウが開くか、対話型ウィンドウ内の既存のコードが置き換えられます。 スニペットに [実行] ボタンが含まれていない場合は、コードをコピーして現在の対話型ウィンドウに追加できます。

整数演算を調べる

対話型ウィンドウで次のコードを実行します。

int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);

上記のコードは、整数を使用した基本的な算術演算を示しています。 intは整数、正または負の整数を表します。 追加には + 記号を使用します。 整数に対するその他の一般的な算術演算は次のとおりです。

  • -: 減算
  • * 乗算の場合
  • /: 除算

これらのさまざまな操作を調べてから始めます。 これらの各操作を試すには、3 行目を変更します。 たとえば、減算を試すには、次の行に示すように、 +- に置き換えます。

int c = a - b;

試してみてください。 [実行] ボタンを選択します。 次に、乗算、 * 、除算、 /を試します。 必要に応じて、同じ行に複数の数学演算を記述して実験することもできます。

ヒント

C# (または任意のプログラミング言語) を調べるときに、コードを記述するときに間違いを犯します。 コンパイラ はこれらのエラーを見つけて報告します。 出力にエラー メッセージが含まれている場合は、コード例と対話型ウィンドウのコードをよく見て、修正する内容を確認します。 この演習は、C# コードの構造を学習するのに役立ちます。

操作の順序を調べる

C# 言語では、数学で学習した規則と一致する規則を使用して、さまざまな数学演算の優先順位を定義します。 乗算と除算は加算と減算よりも優先されます。 これを調べるには、対話型ウィンドウで次のコードを実行します。

int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);

この出力は、乗算が加算の前に実行されることを示しています。

最初に実行したい演算を囲むように丸かっこを追加することで、演算の順序を変えることができます。 対話型ウィンドウに次の行を追加します。

d = (a + b) * c;
Console.WriteLine(d);

さまざまな操作を組み合わせることで、さらに詳しく調べることができます。 前のコードの 4 行目を次のように置き換えます。

d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Console.WriteLine(d);

整数の興味深い動作に気付く場合があります。 整数除算では、結果に 10 進数または小数部が含まれると予想される場合でも、常に整数の結果が生成されます。

次のコードを試してください。

int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
Console.WriteLine(d);

整数の精度と限界を探る

最後のサンプルでは、整数除算によって結果が切り捨てられることが示されています。 剰余演算子、すなわち記号を使うと、剰余を取得できます。

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# 整数型は、数学的な整数とは別の方法で異なります。 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 進数の数を表す相対用語です。 倍精度 数値は、2 進数の 2 倍の 単精度を持ちます。 最新のコンピューターでは、単精度数値よりも倍精度を使用する方が一般的です。 単精度 数値は、 float キーワードを使用して宣言されます。 探検してみましょう。 次のコードを実行し、結果を確認します。

double a = 5;
double b = 4;
double c = 2;
double d = (a + b) / c;
Console.WriteLine(d);

計算結果に商の小数部分が含まれていることに注目してください。 doubles を使用して、もう少し複雑な式を試してみてください。 次の値を使用するか、他の数値に置き換えることができます。

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の前の数値は仮数です。 Eの後の数値は指数であり、10 の累乗です。

数学の 10 進数と同様に、C# の double には丸めエラーが発生する可能性があります。 次のコードを試してください。

double third = 1.0 / 3.0;
Console.WriteLine(third);

あなたは、 0.33/10 であり、 1/3とまったく同じではないことを知っている。 同様に、 0.3333/100。 この値は 1/3に近いですが、正確ではありません。 小数点以下の桁数を追加しても、丸めエラーは残ります。

挑戦

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 型よりも小さいことに注意してください。 次のコードを試してみると、10 進型の方が精度が高くなります。

double a = 1.0;
double b = 3.0;
Console.WriteLine(a / b);

decimal c = 1.0M;
decimal d = 3.0M;
Console.WriteLine(c / d);

10 進数値型を使用する数値には、小数点の右側にさらに多くの数字があることに注意してください。

数値の M サフィックスは、定数が decimal 型を使用する必要があることを示す方法です。 それ以外の場合、コンパイラは double 型を想定します。

M文字は、doubleキーワードとdecimalキーワードの間で最も視覚的に区別される文字として選択されました。

挑戦

半径が 2.50 センチメートルの円の面積を計算するコードを記述します。 円の面積は、半径の 2 乗に PI を乗算した値です。 1 つのヒント: .NET には PI の定数が含まれています。 Math.PI 、その値に使用できます。 Math.PISystem.Math名前空間で宣言されているすべての定数と同様に、double値です。 そのため、このチャレンジでは、doubleの値ではなくdecimalの値を使用する必要があります。

19 から 20 の間で回答を得る必要があります。

試したら、詳細ウィンドウを開いて、その方法を確認します。

:::code language="csharp" interactive="try-dotnet-method" source="./snippets/NumbersInCsharp/Program.cs" id="Challenge":::

必要な場合は、他の数式を試してください。

"C# の数値" 対話型チュートリアルを完了しました。 [タプルと型] リンクを選択して次の対話型チュートリアルを開始するか、.NET サイトにアクセスして .NET SDK をダウンロードし、コンピューターにプロジェクトを作成し、コーディングを続けることができます。 「次のステップ」セクションでは、これらのチュートリアルに戻ります。

C# の数値の詳細については、次の記事を参照してください。