當簡化我的代碼,堆棧溢出用戶改變了這一行代碼:使用百分比符號進行比較? %的JavaScript
if (place > sequence.length -1) {
place = 0;
這樣:
place = place % sequence.length;
,我想知道這條線實際上做,你會怎樣定義這條線的使用和使用百分比符號。提前感謝您的幫助。
當簡化我的代碼,堆棧溢出用戶改變了這一行代碼:使用百分比符號進行比較? %的JavaScript
if (place > sequence.length -1) {
place = 0;
這樣:
place = place % sequence.length;
,我想知道這條線實際上做,你會怎樣定義這條線的使用和使用百分比符號。提前感謝您的幫助。
(%)是模數運算符,它會讓您獲得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
所以它是字面意義上只是將地點的價值除以序列的長度,然後將餘數分配給地方? – AntsOfTheSky
正確@HeatherLara –
的%
符號在大多數編程語言,包括JavaScript使用,Modulu。
modulo是用於查找一個數字除以另一個數字後的餘數的操作用法。
例如:
7%3 = 1
10%2 = 0
9%5 = 4
它是reminder operator %
,不模運算符,它的Javascript實際上沒有。
餘(%)
求餘運算符返回餘遺留當一個操作數是由第二操作數劃分。它始終是股利的標誌,而不是除數。它使用內置的模函數來產生結果,該結果是將
var1
除以var2
的整數餘數 - 例如 -var1
模var2
。 There 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; }
凡嚴格的定義,我覺得最好引用[* ECMA-262 *](http://ecma-international.org/ecma-262/7.0/index.html#sec-applying-the -mod-operator):「*%MultiplicativeOperator從隱含的分區中產生其操作數的餘數;左操作數是被除數,右操作數是除數......浮點餘數操作的結果由%運算符不同於IEEE 754-2008定義的「餘數」運算。*「所以它不是嚴格的」餘數運算符「。 ;-) – RobG
看一看[此](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators) – m87