Java での負の数のモジュロ

Joel Swapnil Singh 2023年10月12日
  1. Java で%演算子を使用して負の数の Mod を取得する
  2. floormod() メソッドを使用して負の数の Mod を取得する
  3. Math.abs() メソッドを使用して負の数の Mod を取得する
Java での負の数のモジュロ

Java では、モジュロ演算子または剰余演算子(%)演算子を使用して除算した後、残りの 2つの数値を求めることができます。

A と B の 2つの数値が与えられているとします。ここで、A は被除数、B は除数です。A mod B を操作する場合、A を B で割ると剰余が得られます。

負の数を扱うと、間違った結果が得られることがあります。この記事では、Java で負の数の mod を見つけるさまざまな方法について説明します。

負の数があり、それらに%演算子を使用すると、左のオペランドの符号に応じた結果が得られます。左のオペランドが正の場合、結果は正になり、左のオペランドが負の場合、結果は負になります。

上記の問題を解決するために、%演算子、floorMod() メソッド、および Math.abs() メソッドを使用して、負の数の mod を見つけることができます。それぞれのアプローチについて 1つずつ説明していきましょう。

Java で%演算子を使用して負の数の Mod を取得する

正のドメインに入るまで最初に mod 係数を追加し、次に%演算子を呼び出すことで、負の数の mod を見つけることができます。このメソッドの助けを借りて、私たちは常に出力よりも大きい mod 係数を持っています。

それがどのように機能するかを理解するために、以下のコードを見てみましょう。

public class Main {
  public static void main(String args[]) {
    int x = -4;
    int y = 3;
    int res = x % y;
    System.out.println("Mod value before operation = " + res);
    while (x < 0) x += y;
    int mod_res = x % y;
    System.out.println("Mod value after operation = " + mod_res);
  }
}

出力:

Mod value before operation = -1
Mod value after operation = 2

floormod() メソッドを使用して負の数の Mod を取得する

floorMod() メソッドを使用して、負の数の mod を見つけることもできます。このメソッドの助けを借りて、int 引数のフロアモジュラスを取得します。

floorMod() 関数の構文を見てみましょう。

構文:

floorMod(number, mod)

floorMod() 関数が負の整数で呼び出されると、mod ファクター記号を使用して出力が取得されます。それがどのように機能するかを理解するために、以下のコードを見てみましょう。

public class Main {
  public static void main(String args[]) {
    int x = -4;
    int y = 3;
    int res = x % y;
    System.out.println("Mod value before operation = " + res);
    int mod_res = Math.floorMod(
        x, y); // This will have the output value as positive since the smod factor is positive
    System.out.println("Mod value after operation having mod factor as positive = " + mod_res);
    x = 4;
    y = -3;
    mod_res = Math.floorMod(
        x, y); // This will have the output value as negative since the mod factor is negative
    System.out.println("Mod value after operation having mod factor as negative = " + mod_res);
  }
}

出力:

Mod value before operation = -1
Mod value after operation having mod factor as positive = 2
Mod value after operation having mod factor as negative = -2

Math.abs() メソッドを使用して負の数の Mod を取得する

Math.abs() メソッドを使用して、負の数の mod を見つけることもできます。

このタスクは、三項演算子を使用して実行します。この演算子は、数値が正か負かに関係なく、両方の場合の出力を生成します。

それがどのように機能するかを理解するために、以下のコードを見てみましょう。

public class Main {
  public static void main(String args[]) {
    int x = -4;
    int y = 3;
    int res = x % y;
    System.out.println("Mod value before operation = " + res);
    int mod_res = (x < 0) ? (y - (Math.abs(x) % y)) % y : (x % y);
    System.out.println("Mod value after operation = " + mod_res);
  }
}

出力:

Mod value before operation = -1
Mod value after operation = 2

関連記事 - Java Math