![](/img/trans.png)
[英]JavaScript % (modulo) gives a negative result for negative numbers
[英]Negative number modulo 2
誠然,我的數學不是那么強。 為什么這兩個例子給出不同的結果?
示例一
function isOdd(num) {
return (num % 2) == 1 ? true : false;
}
console.log(isOdd(-17));
Output: false
(不正確)
示例二
function isOdd(num) {
return (num % 2) != 0 ? true : false;
}
console.log(isOdd(-17));
Output: true
(正確)
控制台測試
console.log(-17 % 2);
output 是-1 ,而不是1 。
任何奇數 mod 2 總是等於 1,不是嗎? 那么為什么會這樣呢? 為什么我需要測試!= 0
才能得到正確答案? 為什么== 1
會產生錯誤的答案?
我在MDN 文檔上找到的關於 javascript 中的 mod 運算符的解釋是返回值帶有被除數的符號(被除數:在您的情況下為 -17)。
當你除以 -17/2 時,這在數學中是相同的。 答案是 -8.5,如果你只想要整數,那么你會得到 -8 - 1/2。 這意味着 -1 是您的部門的剩余部分。
您將在 C 和 Go 編程語言中找到相同的答案。
我不知道為什么 Python 在這種情況下會返回 1。 我的意見是 python 只返回 integer 值並忽略符號。
當余數不為 0 時,可以肯定地說一個數是奇數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.