簡體   English   中英

負數模 2

[英]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.

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