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)