JavaScript % (modulo) 给出负数的负结果

2022-08-29 23:47:51

根据谷歌计算器是.(-13) % 6451

根据Javascript(参见这个JSBin),它是。-13

如何解决此问题?


答案 1
Number.prototype.mod = function (n) {
  "use strict";
  return ((this % n) + n) % n;
};

摘自本文:JavaScript Modulo Bug


答案 2

使用是慢,因为每次使用原型方法时,您的数字都会包装在.取而代之的是:Number.prototypeObject

Number.prototype.mod = function(n) {
  return ((this % n) + n) % n;
}

用:

function mod(n, m) {
  return ((n % m) + m) % m;
}

请参见: http://jsperf.com/negative-modulo/2

比使用原型快约 97%。当然,如果性能对您很重要。