%在JavaScript中做什么?

fan*_*ncy 37 javascript

%在JavaScript中做了什么?

我们非常感谢它的定义和它的作用.

nul*_*ken 29

它是模运算符.有关JavaScript算术运算符的更多信息,请参阅此文档规范.

%(模量)

模数运算符使用如下:

var1%var2

模数运算符在前面的语句中返回以第二个操作数为模的第一个操作数,即var1 modulo var2,其中var1和var2是变量.模数函数是将var1除以var2的整数余数.例如,12%5返回2.结果将与var1具有相同的符号; 也就是说,-1%2返回-1.

  • 这个答案不太正确。它是一个余数运算符。他们不一样!https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder (2认同)

Tus*_*har 18

ES6更新:

正如在其他答案中所解释的那样,它在除数除以除数后返回余数,但是这不再是模运算符,这是余数运算符. 区别在于模运算符结果将采用除数的符号,而不是除数.引自MDN

当一个操作数除以第二个操作数时,余数运算符返回剩余的余数.它总是采取红利的标志,而不是除数.它使用一个内置的模函数,以产生结果,这是除以整数余数var1通过var2 -例如- var1 modulo var2.有人建议在ECMAScript的未来版本中获得一个实际的模运算符,不同之处在于模运算符结果将采用除数的符号,而不是被除数.

例:

-10 % 3 // -1
10 % -3 // 1
Run Code Online (Sandbox Code Playgroud)

  • 这个答案说明了与带有不同符号的被除数和除数一起使用时,“真”模运算符和当前 JavaScript 余数运算符的主要区别。如果不加以考虑,这是一个细微差别,有可能导致算法出现错误。 (4认同)

Ope*_*erX 11

它返回除法运算的余数. 5%2回报1


Jus*_*ner 7

那将是模运算符.

它返回除法运算的剩余部分:

var remainder = 3 % 2; // equals 1
Run Code Online (Sandbox Code Playgroud)


小智 7

它是模运算符.
它计算余数.

如果我们做23%10,
首先,我们将23除以10,等于2.3
然后取.3*(除数)10
= 3


Sri*_*tha 6

在 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。