fancy
fancy

Reputation: 51453

What does % do in JavaScript?

What does the % do in JavaScript?

A definition of what it is and what it does would be much appreciated.

Upvotes: 50

Views: 28584

Answers (10)

Yinglao Liu
Yinglao Liu

Reputation: 43

This is what I would do to getModulus, given k > 0. I find it more intuitive as Math.floor(num / k ) in js is exactly num // k in python.

function getModulus(num, k) {
    return num - Math.floor(num / k ) * k
}

Upvotes: 0

SridharKritha
SridharKritha

Reputation: 9671

In JavaScript, % is a remainder operator (Not a modulo operator).

remainder operator % (uses Math.truc()):

remainder = -5 % 3 = -2

How is it calculated ?

quotient  = Math.trunc(dividend / divisor) = Math.trunc(-5 / 3) = -1;
remainder = dividend - divisor * quotient  = -5 - (3 * -1) = -2

modulo function (uses Math.floor()):

modulo(-5,3) = 1

How is it calculated ?

quotient = Math.floor(dividend / divisor) = Math.floor(-5 / 3) = -2;
remainder = dividend - divisor * quotient = -5 - (3 * -2) = 1

For positive numbers, both remainder operator and modulo gives the same result.

5 % 3 = 2
modulo(5,3) = 2

In JavaScript, there is no build-in function for doing modulo operation, so you need to write on your own by using Math.floor() as above. Alternatively even you could easily write using the remainder operator as shown below.

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

Upvotes: 7

Romain Bel
Romain Bel

Reputation: 89

Just in case, if someone is looking for a real modulo function (which would always get the sign of the divisor), you can use this:

function Modulo(num, denom)
{
    if (num%denom >= 0)
    {
        return Math.abs(num%denom);
    }
    else
    {
        return num%denom + denom;
    }
}

The Math.abs is to prevent the case -12%12 → -0, which is considered equal to 0 but displayed as -0.

Upvotes: 5

Joy Das
Joy Das

Reputation: 85

% performs as the modulo operator, return division reminder. Example:

<script>
    var x = 5;
    var y = 2;
    var z = x % y;
    alert(z);
</script>

This will alert 1.

Upvotes: 1

nulltoken
nulltoken

Reputation: 67639

It's a modulo operator. See this documentation or the specification for more information on JavaScript arithmetic operators.

% (Modulus)

The modulus operator is used as follows:

var1 % var2

The modulus operator returns the first operand modulo the second operand, that is, var1 modulo var2, in the preceding statement, where var1 and var2 are variables. The modulo function is the integer remainder of dividing var1 by var2. For example, 12 % 5 returns 2. The result will have the same sign as var1; that is, −1 % 2 returns −1.

Upvotes: 36

Tushar
Tushar

Reputation: 87203

ES6 Update:

As explained in other answers, it returns the remainder after dividing the dividend by divisor, however this is no longer modulo operator, this is remainder operator. the difference being that the modulo operator result would take the sign of the divisor, not the dividend.Quoted from MDN

The remainder operator returns the remainder left over when one operand is divided by a second operand. It always takes the sign of the dividend, not the divisor. It uses a built-in modulo function to produce the result, which is the integer remainder of dividing var1 by var2 — for example — var1 modulo var2. There is a proposal to get an actual modulo operator in a future version of ECMAScript, the difference being that the modulo operator result would take the sign of the divisor, not the dividend.

Example:

-10 % 3 // -1
10 % -3 // 1

Upvotes: 33

MHShoman
MHShoman

Reputation: 79

It is a modulo operator.
It calculates the remainder.

If we do 23 % 10,
first, we divide 23 by 10 which equals 2.3
then take .3 * (the divisor) 10
= 3

Upvotes: 7

OpenCoderX
OpenCoderX

Reputation: 6318

It returns the remainder of a division operation. 5%2 returns 1

Upvotes: 12

Baz1nga
Baz1nga

Reputation: 15579

Modulus (%) operator returns the remainder.

If either value is a string, an attempt is made to convert the string to a number.

alert(5%3) will alert 2

Upvotes: 3

Justin Niessner
Justin Niessner

Reputation: 245459

That would be the modulo operator.

It returns the remainder of a division operation:

var remainder = 3 % 2; // equals 1

Upvotes: 6

Related Questions