Mod de Números Negativos en Java

Joel Swapnil Singh 12 octubre 2023
  1. Obtenga la modificación de los números negativos usando el operador % en Java
  2. Obtenga la Mod de Números Negativos usando el Método floormod()
  3. Obtenga la Mod de Números Negativos Usando el Método Math.abs()
Mod de Números Negativos en Java

En Java, podemos encontrar el resto de dos números después de la división con la ayuda del operador Modulo o Remainder Operator (%).

Supongamos que nos dan dos números, A y B, donde A es el dividendo y B es el divisor. Cuando operamos A mod B, obtenemos un Resto cuando A se divide por B.

Si tratamos con números negativos, a veces obtenemos resultados erróneos. Este artículo discutirá diferentes formas de encontrar el mod de números negativos en Java.

Si tenemos números negativos y usamos el operador % sobre ellos, obtendremos el resultado dependiendo del signo del operando izquierdo. Si tenemos el operando de la izquierda como positivo, obtendremos el resultado como positivo, y si el operando de la izquierda es negativo, obtendremos el resultado como negativo.

Para resolver el problema anterior, podemos encontrar la moda de los números negativos usando el operador %, el método floorMod() y el método Math.abs(). Discutamos cada uno de los enfoques uno por uno.

Obtenga la modificación de los números negativos usando el operador % en Java

Podemos encontrar la moda del número negativo sumando primero el factor de moda hasta llegar al dominio positivo y luego invocar el operador %. Con la ayuda de este método, siempre tenemos un factor de modulación mayor que la salida.

Veamos el siguiente código para entender cómo funciona.

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

Producción :

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

Obtenga la Mod de Números Negativos usando el Método floormod()

También podemos encontrar la moda de un número negativo usando el método floorMod(). Con la ayuda de este método, obtenemos el módulo base de los argumentos int.

Veamos la sintaxis de la función floorMod().

Sintaxis:

floorMod(number, mod)

Cuando se invoca la función floorMod() en un entero negativo, obtenemos la salida con el signo del factor mod. Veamos el siguiente código para entender cómo funciona.

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

Producción :

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

Obtenga la Mod de Números Negativos Usando el Método Math.abs()

También podemos encontrar la moda de los números negativos usando el método Math.abs().

Realizaremos esta tarea con la ayuda de un operador ternario. Este operador producirá resultados para ambos casos, ya sea que el número sea positivo o negativo.

Veamos el siguiente código para entender cómo funciona.

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

Producción :

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

Artículo relacionado - Java Math