2012-01-17 25 views

Odpowiedz

25

jest to modulo operator. Więcej informacji na temat operatorów arytmetycznych JavaScript znajduje się pod tym numerem: documentation lub.

% (Moduł sprężystości)

Operator moduł stosuje się w następujący sposób:

Var1% var2

Operator moduł powraca pierwszy argument operacji modulo drugi argumentu operacji, to jest , var1 modulo var2, w poprzednim komunikacie, gdzie var1 i var2 są zmiennymi. Funkcja modulo jest liczbą całkowitą pozostałą część dzielącą war1 przez var2. Na przykład 12% 5 zwraca 2. Wynik będzie miał taki sam znak jak war1; czyli -1% 2 zwraca -1.

+0

Jeśli oczekujesz, że operator zwróci liczbę całkowitą (np. Dla obliczeń kalendarza), Należy obciąć war1 i var2 na liczby całkowite przed zastosowaniem% -operatora. Modolus jest zdefiniowany w ten sposób i nie można użyć%, jaki jest. Ex: Pobierz ostatnią niedzielę marca 2017. '31 - (((((5 * 2017)/4) + 4)% 7)) == 25.75 // Nieaktualna data 31 - (~~ ((((5 * 2017)/4) + 4)% 7)) == 26 // Prawidłowo " –

6

To byłby modulo operator.

Zwraca resztę z operacji dzielenia:

var remainder = 3 % 2; // equals 1 
3

Operator modu (%) zwraca pozostałą część.

Jeśli któraś z wartości jest łańcuchem, podejmowana jest próba przekonwertowania ciągu na liczbę.

alert(5%3) powiadomi 2

9

Zwraca resztę z operacji dzielenia. 5%2 powraca 1

6

jest operatorem modulo.
Oblicza pozostałą część.

Jeśli do 23% 10,
pierwszy podzielić 23 przez 10, która jest równa 2,3
następnie .3 * (dzielnik) 10
= 3

1

% występuje jako operator modulo, przypomnienie o powrocie. Przykład:

To ostrzeże 1.

8

ES6 Update:

Jak wyjaśniono w innych odpowiedzi, zwraca pozostałą po podzieleniu dywidendy przez dzielnik, to jednak nie jest operatorem modulo jest remainder operator.tą różnicą, że w wyniku operatora modulo przyjąłby znak dzielnika, a nie dywidendy.Cyt z MDN

Operator zwraca pozostała reszta w lewo kończy się, gdy jeden argument jest podzielone przez drugi argument operacji. Zawsze przyjmuje znak dywidendy, a nie dzielnik. Używa wbudowanej funkcji modulo do wygenerowania wyniku, który jest całkowitą pozostałością dzielenia var1 przez var2 - na przykład - var1 modulo var2. There is a proposal to get an actual modulo operator in a future version of ECMAScript, z tą różnicą, że wynik operatora modulo przyjmowałby znak dzielnika, a nie dywidendy.

Przykład:

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

Tylko w przypadku, jeśli ktoś szuka funkcji prawdziwy modulo (która zawsze dostanie znak dzielnik), można użyć tego:

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

The Math.abs ma zapobiec przypadkowi -12% 12 → -0, które jest uważane za równe 0, ale wyświetlane jako -0.