JavaScript % (módulo) da un resultado negativo para números negativos

Resuelto Alec Gorge asked hace 13 años • 13 respuestas

Según la Calculadora de Google (-13) % 64 es 51.

Según Javascript (ver este JSBin ) es -13.

¿Cómo puedo solucionar esto?

Alec Gorge avatar Dec 17 '10 10:12 Alec Gorge
Aceptado
Number.prototype.mod = function (n) {
  "use strict";
  return ((this % n) + n) % n;
};

Tomado de este artículo: El error del módulo JavaScript

Enrique avatar Dec 17 '2010 03:12 Enrique

El uso Number.prototypees 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...

StuR avatar Jun 26 '2013 14:06 StuR