C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のMath.DivRemメソッドとは?商と余りを同時に計算する方法

C#のMath.DivRemメソッドは、2つの数値の商(割り算の結果)を計算すると同時に、余りも取得できる便利なメソッドです。通常、商を求める場合は「/」演算子、余りを求める場合は「%」演算子を使いますが、Math.DivRemを使えば1回の呼び出しで両方の結果を得ることができます。

Math.DivRemメソッドの基本構文

まず、被除数(割られる数)と除数(割る数)を設定します。

// 被除数(割られる数)
long dividend = 30;
// 除数(割る数)
long divisor = 7;

続いて、DivRemメソッドを呼び出します。第3引数にはoutパラメータとして余りを受け取る変数を指定し、メソッドの戻り値として商が返されます。

long quotient = Math.DivRem(dividend, divisor, out rem);

主なオーバーロード

  • Math.DivRem(int a, int b, out int result) … 32ビット整数用
  • Math.DivRem(long a, long b, out long result) … 64ビット整数用

なお、このメソッドは整数型(int・longなど)専用であり、浮動小数点数(doubleやfloat)には使用できませんので注意してください。

サンプルコード

以下は、98を9で割ったときの商と余りをMath.DivRemメソッドで求める完全なサンプルプログラムです。

using System;

class Demo {
    static void Main() {
        // 余り
        long rem;
        // 被除数(割られる数)
        long dividend = 98;
        // 除数(割る数)
        long divisor = 9;

        long quotient = Math.DivRem(dividend, divisor, out rem);

        Console.WriteLine("{0} \\ {1} = {2} and remainder = {3}", dividend, divisor, quotient, rem);
    }
}

実行結果

98 \ 9 = 10 and remainder = 8

このように、98 ÷ 9 の商である「10」と、余りの「8」を一度の呼び出しで同時に取得できていることがわかります。

まとめ

  • Math.DivRemメソッドは、商を戻り値として返し、余りをoutパラメータで受け取る。
  • 商と余りの両方が必要な場面で、コードを簡潔に書ける。
  • 対象は整数型のみで、小数点以下の計算には使えない。

剰余演算を頻繁に行う処理や、商と余りをセットで扱うロジックを実装する際には、Math.DivRemメソッドの活用を検討してみてください。

  1. C#のMath.Exp()メソッドの使い方を徹底解説!eの累乗計算と特殊値の挙動

    C#のMath.Exp()メソッドは、自然対数の底「e」(ネイピア数、約2.71828)を指定した値で累乗した結果を返すメソッドです。数学的な指数関数の計算が必要な場面で活用されます。構文public static double Exp (double val);引数 val には、eの累乗の指数となる倍精度浮動小数点数(double型)を指定します。戻り値もdouble型です。特殊な値が渡された場合の挙動NaN(非数)またはPositiveInfinity(正の無限大)を渡した場合 → その値がそのまま返されます。NegativeInfinity(負の無限大)を渡した場合 → 0 が返されま

  2. C#のMath.DivRem()メソッドの使い方を徹底解説!商と余りを同時に取得する方法

    C#のMath.DivRem()メソッドは、2つの数値の除算を行って商(quotient)を返すとともに、余り(remainder)をoutパラメータとして受け取ることができる便利なメソッドです。通常、商と余りの両方を求めるには「/」演算子と「%」演算子を別々に使う必要がありますが、このメソッドを使えば一度の呼び出しで両方の結果を取得できます。構文public static int DivRem(int dividend, int divisor, out int remainder); public static long DivRem(long dividend, long divisor