2017-02-25 188 views
0

當簡化我的代碼,堆棧溢出用戶改變了這一行代碼:使用百分比符號進行比較? %的JavaScript

if (place > sequence.length -1) { 
    place = 0; 

這樣:

place = place % sequence.length; 

,我想知道這條線實際上做,你會怎樣定義這條線的使用和使用百分比符號。提前感謝您的幫助。

+0

看一看[此](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators) – m87

回答

1

(%)是模數運算符,它會讓您獲得place/sequence.length的其餘部分。

5 % 1 = 0 // because 1 divides 5 (or any other number perfectly) 
10 % 3 = 1 // Attempting to divide 10 by 3 would leave remainder as 1 
+0

所以它是字面意義上只是將地點的價值除以序列的長度,然後將餘數分配給地方? – AntsOfTheSky

+0

正確@HeatherLara –

0

%符號在大多數編程語言,包括JavaScript使用,Modulu

modulo是用於查找一個數字除以另一個數字後的餘數的操作用法。

例如:

7%3 = 1

10%2 = 0

9%5 = 4

0

它是reminder operator %,不模運算符,它的Javascript實際上沒有。

餘(%)

求餘運算符返回餘遺留當一個操作數是由第二操作數劃分。它始終是股利的標誌,而不是除數。它使用內置的模函數來產生結果,該結果是將var1除以var2的整數餘數 - 例如 - var1var2There is a proposal to get an actual modulo operator in a future version of ECMAScript,不同之處在於模運算符的結果將取除數的符號,而不是股息。

console.log(-4 & 3); 
 
console.log(-3 & 3); 
 
console.log(-2 & 3); 
 
console.log(-1 & 3); 
 
console.log(0 & 3); 
 
console.log(1 & 3); 
 
console.log(2 & 3); 
 
console.log(3 & 3);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+1

凡嚴格的定義,我覺得最好引用[* ECMA-262 *](http://ecma-international.org/ecma-262/7.0/index.html#sec-applying-the -mod-operator):「*%MultiplicativeOperator從隱含的分區中產生其操作數的餘數;左操作數是被除數,右操作數是除數......浮點餘數操作的結果由%運算符不同於IEEE 754-2008定義的「餘數」運算。*「所以它不是嚴格的」餘數運算符「。 ;-) – RobG