爲什麼modulo運算符在C和Java中無法正常工作?爲什麼在Java和C中-1%26 = -1,爲什麼它在Python中是25?
3
A
回答
3
Python的%-operator計算數學餘數,而不是模數。其餘部分根據定義是0和除數之間的數字,它不依賴於像模數那樣的紅利符號。
+0
其實,你已經把它落後了,如果y是正數,那麼「x mod y」將會在0和y-1之間,而「x餘數y」的符號將取決於x的符號。我想不出任何我曾經對負數使用「%」運算符的情況,並且想要其餘的,但很長一段時間,標準只強制要求具有正操作數的「%」的特定行爲;在這些情況下,「mod」和「餘數」是同義詞,「mod」更容易表達,所以這就是卡住的名字。 – supercat 2014-09-26 19:05:47
0
不確定python,但%
java中的運算符返回除法後得到的餘數。
-1%26
它分解:
26)-1(0
0
---
-1 ---> Remainder as (-1+0=-1)
1
按規定這是工作。
的契約是
a == (a/b) * b + (a % b)
和整數除法朝向零截斷。因此,如果派息爲負,則會得到負值餘額。
4
Wikipedia有一個不錯的表格,它顯示了各種語言的操作符號。在Python中,它是除數的標誌(26),在Java/C中是分紅的標誌(-1)。
剩餘量與模量 – Doorknob 2013-03-22 18:14:25
非常感謝大家!它真的幫了大忙! – DDC 2013-03-22 18:28:42
我更喜歡餘下的版本,但是在java中,設計決定是以不同的方式進行的:-( – MrSmith42 2013-03-22 18:38:46