nul*_*ken 29
它是模运算符.有关JavaScript算术运算符的更多信息,请参阅此文档或规范.
%(模量)
模数运算符使用如下:
var1%var2
模数运算符在前面的语句中返回以第二个操作数为模的第一个操作数,即var1 modulo var2,其中var1和var2是变量.模数函数是将var1除以var2的整数余数.例如,12%5返回2.结果将与var1具有相同的符号; 也就是说,-1%2返回-1.
Tus*_*har 18
ES6更新:
正如在其他答案中所解释的那样,它在除数除以除数后返回余数,但是这不再是模运算符,这是余数运算符. 区别在于模运算符结果将采用除数的符号,而不是除数.引自MDN
当一个操作数除以第二个操作数时,余数运算符返回剩余的余数.它总是采取红利的标志,而不是除数.它使用一个内置的模函数,以产生结果,这是除以整数余数
var1
通过var2
-例如-var1 modulo var2
.有人建议在ECMAScript的未来版本中获得一个实际的模运算符,不同之处在于模运算符结果将采用除数的符号,而不是被除数.
例:
-10 % 3 // -1
10 % -3 // 1
Run Code Online (Sandbox Code Playgroud)
在 JavaScript 中,%
是remainder operator
(不是模运算符)。
余数运算符 %(使用Math.truc()
):
remainder = -5 % 3 = -2
Run Code Online (Sandbox Code Playgroud)
它是如何计算的?
quotient = Math.trunc(dividend / divisor) = Math.trunc(-5 / 3) = -1;
remainder = dividend - divisor * quotient = -5 - (3 * -1) = -2
Run Code Online (Sandbox Code Playgroud)
模函数(使用Math.floor()
):
modulo(-5,3) = 1
Run Code Online (Sandbox Code Playgroud)
它是如何计算的?
quotient = Math.floor(dividend / divisor) = Math.floor(-5 / 3) = -2;
remainder = dividend - divisor * quotient = -5 - (3 * -2) = 1
Run Code Online (Sandbox Code Playgroud)
对于正数,余数运算符和模运算给出相同的结果。
5 % 3 = 2
modulo(5,3) = 2
Run Code Online (Sandbox Code Playgroud)
在 JavaScript 中,没有用于执行求模运算的内置函数,因此您需要使用上面的 Math.floor() 自行编写。或者,您甚至可以使用余数运算符轻松编写,如下所示。
function modulo(n, m) {
return ((n % m) + m) % m;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
以防万一,如果有人正在寻找一个真正的模函数(它总是会得到除数的符号),你可以使用这个:
function Modulo(num, denom)
{
if (num%denom >= 0)
{
return Math.abs(num%denom);
}
else
{
return num%denom + denom;
}
}
Run Code Online (Sandbox Code Playgroud)
Math.abs 是为了防止 -12%12 的情况?-0,被认为等于 0,但显示为 -0。
归档时间: |
|
查看次数: |
12312 次 |
最近记录: |