Mod de nombres négatifs en Java

Joel Swapnil Singh 12 octobre 2023
  1. Obtenez le mod des nombres négatifs en utilisant l’opérateur % en Java
  2. Obtenez le mod des nombres négatifs en utilisant la méthode floormod()
  3. Obtenez le mod des nombres négatifs en utilisant la méthode Math.abs()
Mod de nombres négatifs en Java

En Java, on peut trouver le reste de deux nombres après division à l’aide de l’opérateur Modulo ou Remainder Operator (%).

Supposons qu’on nous donne deux nombres, A et B, où A est le dividende et B est le diviseur. Lorsque nous opérons A mod B, nous obtenons un reste lorsque A est divisé par B.

Si nous traitons avec des nombres négatifs, nous obtenons parfois de mauvais résultats. Cet article discutera des différentes façons de trouver le mod des nombres négatifs en Java.

Si nous avons des nombres négatifs et utilisons l’opérateur % dessus, nous obtiendrons le résultat en fonction du signe de l’opérande gauche. Si nous avons l’opérande gauche comme positif, nous obtiendrons le résultat positif, et si l’opérande gauche est négatif, nous obtiendrons le résultat négatif.

Pour résoudre le problème ci-dessus, nous pouvons trouver le mod des nombres négatifs en utilisant l’opérateur %, la méthode floorMod() et la méthode Math.abs(). Examinons chacune des approches une par une.

Obtenez le mod des nombres négatifs en utilisant l’opérateur % en Java

Nous pouvons trouver le mod du nombre négatif en ajoutant d’abord le facteur mod jusqu’à ce que nous entrions dans le domaine positif, puis en invoquant l’opérateur %. Avec l’aide de cette méthode, nous avons toujours le facteur mod supérieur à la sortie.

Regardons le code ci-dessous pour comprendre comment cela fonctionne.

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);
  }
}

Production :

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

Obtenez le mod des nombres négatifs en utilisant la méthode floormod()

On peut aussi trouver le mod de nombre négatif en utilisant la méthode floorMod(). Avec l’aide de cette méthode, nous obtenons le module plancher des arguments int.

Regardons la syntaxe de la fonction floorMod().

Syntaxe:

floorMod(number, mod)

Lorsque la fonction floorMod() est invoquée sur un entier négatif, nous obtenons la sortie avec le signe du facteur mod. Regardons le code ci-dessous pour comprendre comment cela fonctionne.

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);
  }
}

Production :

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

Obtenez le mod des nombres négatifs en utilisant la méthode Math.abs()

On peut aussi trouver le mod des nombres négatifs en utilisant la méthode Math.abs().

Nous effectuerons cette tâche à l’aide d’un opérateur ternaire. Cet opérateur produira une sortie dans les deux cas, que le nombre soit positif ou négatif.

Regardons le code ci-dessous pour comprendre comment cela fonctionne.

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);
  }
}

Production :

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

Article connexe - Java Math