演習 - 数学演算を実行する

完了

加算、そしてさらに重要な、数値と文字列データ型の間の暗黙的な型変換の基本を理解したので、数値データに対するその他の一般的算術演算をいくつか見てみましょう。

基本的な算術演算を実行する

整数で加算、減算、乗算、除算を実行するコードを記述する

  1. .NET エディターですべてのコードを選択し、Delete または Backspace キーを押して削除します。

  2. .NET エディターで、次のコードを入力します。

    int sum = 7 + 5;
    int difference = 7 - 5;
    int product = 7 * 5;
    int quotient = 7 / 5;
    
    Console.WriteLine("Sum: " + sum);
    Console.WriteLine("Difference: " + difference);
    Console.WriteLine("Product: " + product);
    Console.WriteLine("Quotient: " + quotient);
    
  3. コードを実行します。 次の出力が表示されます。

    Sum: 12
    Difference: 2
    Product: 35
    Quotient: 1
    

ご覧のとおり、

  • + は加算演算子です。
  • - は減算演算子です。
  • * は乗算演算子です。
  • / は除算演算子です。

ただし、この除算の例で得られる商は予想とは異なる場合があります。 quotientint として定義されており、int では小数点の後ろに値を含めることができないため、小数点の後ろの値は切り捨てられます。

リテラル小数データを利用して除算を実行するコードを追加する

除算が正しく機能することを確認するには、decimal のような小数点の後の小数桁をサポートするデータ型を使う必要があります。

  1. 前の手順からのコードを削除し、次のコードを .NET エディターに入力します。

    decimal decimalQuotient = 7.0m / 5;
    Console.WriteLine($"Decimal quotient: {decimalQuotient}");
    
    
  2. コードを実行します。 次の出力が表示されます。

    Decimal quotient: 1.4
    

これが機能するには、商 (代入演算子の左辺) が decimal 型である必要があり、かつ、割られる値の少なくとも 1 つも decimal 型である必要があります (両方の値が decimal 型でもかまいません)。

同様に機能する例をさらに 2 つ挙げます。

decimal decimalQuotient = 7 / 5.0m;
decimal decimalQuotient = 7.0m / 5.0m;

ただし、次のコード行は機能しません (もしくは、結果が正しくありません)。

int decimalQuotient = 7 / 5.0m;
int decimalQuotient = 7.0m / 5;
int decimalQuotient = 7.0m / 5.0m;
decimal decimalQuotient = 7 / 5;

整数除算の結果をキャストするコードを追加する

扱っているのがリテラル値ではない場合、どうすればよいでしょうか。 言い換えると、型 int の 2 つの変数を除算する必要があるが、計算結果を切り捨てたくない場合、どうすればよいでしょうか。 その場合、intdecimal に型変換する必要があります。 型変換はデータ変換の一種であり、別のデータ型であるかのように一時的に値を扱うよう、コンパイラに指示します。

intdecimal に型変換するには、値の前に型変換演算子を追加します。 データ型をかっこで囲み、キャストする値の前に指定します。 この例では、変数 firstsecond の前に (decimal) を追加します。

  1. 前の手順からのコードを削除し、次のコードを .NET エディターに入力します。

    int first = 7;
    int second = 5;
    decimal quotient = (decimal)first / (decimal)second;
    Console.WriteLine(quotient);
    
  2. コードを実行します。 次の出力が表示されます。

    1.4
    

Note

かっこ演算子の 3 つの用途である、メソッド呼び出し、演算の順序、型変換を確認しました。

整数の除算後の剰余を決定するコードを記述する

剰余演算子 % は、int 除算の剰余を示します。 実際のところ、これから理解できることは、ある数値を別の数値で除算できるかどうかということです。 その理解は、大量のデータ レコードをループ処理するとき、100 件のデータ レコードを処理するたびにエンド ユーザーにフィードバックを提供する際、処理時間が長くなる演算で役立つことがあります。

  1. 前の手順からのコードを削除し、次のコードを .NET エディターに入力します。

    Console.WriteLine($"Modulus of 200 / 5 : {200 % 5}");
    Console.WriteLine($"Modulus of 7 / 5 : {7 % 5}");
    
    
  2. コードを実行します。 次の出力が表示されます。

    Modulus of 200 / 5 : 0
    Modulus of 7 / 5 : 2
    

係数が 0 のとき、被除数は除数で除算できます。

演算の順序

前の演習で学習したように、"演算の順序" 演算子として () 記号を使用できます。 ただし、これは演算の順序を決定する唯一の方法ではありません。

数学では、演算の順序を覚えるのに PEMDAS という頭字語が役に立ちます。 その順序を次に示します。

  1. Parentheses (かっこ。かっこの中が最初に計算されます)
  2. Exponents (指数)
  3. Multiplication (乗算) と Division (除算) (左から右の順に)
  4. Addition (加算) と Subtraction (減算) (左から右の順に)

C# の場合、指数を除き、PEMDAS と順序が同じになります。 C# には指数演算子はありませんが、System.Math.Pow メソッドを使用できます。 「C# を使用して .NET クラス ライブラリからメソッドを呼び出す」というモジュールでそれを含むメソッドが取り上げられています。

C# の操作の順序を実行するコードを記述する

  1. 前の手順からのコードを削除し、次のコードを .NET エディターに入力します。

    int value1 = 3 + 4 * 5;
    int value2 = (3 + 4) * 5;
    Console.WriteLine(value1);
    Console.WriteLine(value2);
    

    これから、同じ演算を異なる順序で実行したときの違いがわかります。

  2. コードを実行します。 次の出力が表示されます。

    23
    35
    

まとめ

C# の数学演算についてこれまでに学習した内容を次に示します。

  • +-*/ などの演算子を使用し、基本的な算術演算を実行します。
  • 2 つの int 値を除算すると、小数点の後ろの値がすべて切り捨てられます。 小数点の後ろの値を維持するには、除数または被除数 (あるいは両方) を int から decimal のような浮動小数点数に型変換する必要があります。次に、切り捨てを回避するために、商を同じ浮動小数点型にする必要があります。
  • 型変換演算を実行し、まるで別のデータ型であるかのように一時的に値を処理します。
  • 除算後に剰余を取得するには、% 演算子を使用します。
  • 演算の順序は頭字語 PEMDAS の規則に従います。