JavaScript%(模)对负数给出了负值结果
根据谷歌计算器(-13) % 64
是51
。
根据Javascript(见这JSBin)它是-13
。
我该如何解决?
Number.prototype.mod = function(n) {
return ((this%n)+n)%n;
};
采取这篇文章:JavaScript模块错误
使用Number.prototype
是SLOW,因为每次使用原型方法时,您的数字都包装在Object
。 取而代之的是:
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%。 如果性能对你来说当然很重要..
JavaScript中的%
运算符是余数运算符,而不是模运算符(主要区别在于如何处理负数):
-1 % 8 // -1, not 7
上一篇: JavaScript % (modulo) gives a negative result for negative numbers