JavaScript % (módulo) da un resultado negativo para números negativos
Según la Calculadora de Google (-13) % 64
es 51
.
Según Javascript (ver este JSBin ) es -13
.
¿Cómo puedo solucionar esto?
Aceptado
Number.prototype.mod = function (n) {
"use strict";
return ((this % n) + n) % n;
};
Tomado de este artículo: El error del módulo JavaScript
El uso Number.prototype
es LENTO, porque cada vez que usas el método prototipo tu número se envuelve en un archivo Object
. En lugar de esto:
Number.prototype.mod = function(n) {
return ((this % n) + n) % n;
}
Usar:
function mod(n, m) {
return ((n % m) + m) % m;
}
Ver: https://jsperf.app/negative-modulo/2
~97% más rápido que usar un prototipo. Si el rendimiento es importante para usted, por supuesto...