簡體   English   中英

如何在JavaScript中計算負整數的模數?

[英]How to calculate modulo of negative integers in JavaScript?

我試圖通過遞增或遞減1迭代jQuery對象數組。因此,對於遞減部分,我使用此代碼:

var splitted_id = currentDiv.attr('id').split('_');
var indexOfDivToGo = parseInt(splitted_id[1]);
indexOfDivToGo = (indexOfDivToGo-1) % allDivs.length;
var divToGo = allDivs[indexOfDivToGo];

所以我有4個帶id的元素:

div_0
div_1
div_2
div_3

我期待它迭代為3 - 2 - 1 - 0 - 3 - 2 - 等等。

但它在零之后返回-1,因此它被卡住了。 所以它迭代為:

3 - 2 - 1 - 0 - -1 - 卡住了

我知道我可以通過更改代碼的第二行來修復它

indexOfDivToGo = (indexOfDivToGo-1 + allDivs.length) % allDivs.length;

但我想知道為什么JavaScript不計算負模型。 也許這對另一位編碼人員也有幫助。

你可以試試這個:p-

Number.prototype.mod = function(n) {
    return ((this % n) + n) % n;
}

看看這個

如果模運算的第一個操作數為負數且第二個操作數為正數,則從C繼承的大多數語言將返回否定結果。 我不確定為什么這個決定是最初的。 可能最接近當時處理器中的處理器。 無論如何,從那以后,“為什么”的答案很可能“因為那是那些知道C期望的程序員”。

MDC Reference包含一個指向引入正確mod運算符的提議的指針。 但即使這樣也會保留現有的%運算符(他們稱之為“余數”以更好地區分它們)並引入新的中綴詞符號a mod b 該提案的日期是2011年,我不知道最近這方面的發展情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM