Saltar al contenido

javascript cómo saber si un número es múltiplo de otro

Hola, encontramos la solución a lo que andabas buscando, deslízate y la obtendrás más abajo.

Solución:

Utilizar el % (módulo) en Javascript y PHP, que devuelve el resto cuando a se divide por b en a % b. El resto será cero cuando a es múltiplo de b.

Ex.

//Javascript
var result = userLength * basePrice;     //Get result
if(result % patternLength)              //Check if there is a remainder
  var remainder = result % patternLength; //Get remainder
  if(remainder >= patternLength / 2)      //If the remainder is larger than half of patternLength, then go up to the next mulitple
    result += patternLength - remainder;
  else                                    //Else - subtract the remainder to go down
    result -= remainder;

result = Math.round(result * 100) / 100;  //Round to 2 decimal places

Puede usar el módulo para encontrar el resto después de una división y luego, si el resto es igual a cero, entonces es un múltiplo.

//x and y are both integers
var remainder = x % y;
if (remainder == 0)
//x is a multiple of y
 else 
//x is not a multiple of y

Si los números que está usando podrían ser de 2dp, el módulo aún debería funcionar, si no, multiplique ambos por 100 primero y luego realice la verificación anterior.

Esto evita problemas de precisión de JavaScript.

function isMultiple(x, y) 
    return Math.round(x / y) / (1 / y) === x;


[
    [2.03, 0.01],
    [2.029999999999, 0.01],
    [2.030000000001, 0.01],
    [0.03, 0.01],
    [240, 20],
    [240, 21],
    [1, 1],
    [4, 2],
    [6, 3],
    [6, 4],
].forEach(([number, multiple]) => 
    const result = isMultiple(number, multiple);
    console.log(`isMultiple ($number, $multiple) =`, result);
);

Más adelante puedes encontrar los informes de otros programadores, tú también tienes la opción de insertar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *