2013-06-26 146 views
-3

我很困惑1% 2的邏輯將是1.因爲從我所知道的1/2是所以這裏沒有餘數。爲什麼1%2等於1?

+0

你知道模數運算符返回什麼嗎? – squiguy

+1

3/2是1餘數1. 2/2是1餘數0. 1/2是0餘數1. 0/2是0餘數0. – Patashu

+5

https://en.wikipedia.org/wiki/Modulus_operator – BrenBarn

回答

1

2 * 0 0 因此餘數爲1

如果問題是找到米%正

我們發現最小或等於q,使得使得n *(一些整數)= q和q < =米 然後我們發現(MQ),它是剩餘..

4

%返回的a/b其餘:

>>> 1 % 2 
1 
>>> 1/2 
0 
>>> 1 - 0 
1 

此外,模表達式可以表示爲:

r = a - nq 

其中Q是floor(a/n)。因此:

>>> import math 
>>> 1 - 2 * math.floor(1/2) 
1.0 
+0

Ahh yeah ~~感謝有耐心解釋這個愚蠢的問題〜 –

+1

@ErikaSawajiri哈哈,我們都有那個時刻:p – TerryA

4

1/2爲0且餘數爲1.%運算符返回該餘數。

+1

什麼是在這個網站上做的蜥蜴 – jamylak

+1

@jamylak讓我們都感覺像小菜一樣 – TerryA

2

當然還有一個餘數。你能從1中得到多少2? 0個,剩下1個。

1

什麼%運營商正在做:

a % b等於值c0 <= c < b且存在許多k使b * k + c = a

3

%是模運算符。它將左手側分開後返回餘數。由於2將零分爲1,餘數爲1。

一般來說,如果a和b都是正整數,並且a是< b,那麼%b == a。

雖然參數不需要是整數。更詳細地是可從蟒參考文檔(http://docs.python.org/2/reference/expressions.html):

%(模)運算符產生了由第二的第一個參數的除法的餘數。數字參數首先被轉換爲通用類型。零右參數引發ZeroDivisionError異常。參數可以是浮點數,例如,3.14%0.7等於0.34(因爲3.14等於4 * 0.7 + 0.34)。模運算符總是產生與第二操作數(或零)符號相同的結果;結果的絕對值嚴格小於第二個操作數[2]的絕對值。

整數除法和模運算符通過以下標識連接:x ==(x/y)* y +(x%y)。整數除法和模數還與內置函數divmod()相連:divmod(x,y)==(x/y,x%y)。這些標識不適用於浮點數;在x/y被樓層(x/y)或樓層(x/y) - 1 [3]取代的地方,類似的身份大致保持不變。

+0

*「一般來說,如果a和b是整數,並且a arshajii

+0

好的。我糾正了對一般情況的評論,將其限制爲正整數 - 考慮到這個問題的簡單例子,我想提供類似的東西。 – James

2

好了,答案已經貼像6次了,只是添加此的完整性,如果有了解模(%)的一種方式,它是從基地10轉換爲基數爲二,1不可再分減2,所以我們保持獨立(得到1的餘數)。您可以將第三列中的二進制數字想象爲模運算的結果。

例如。 9(base 10)到(base 2)..

2 | 9 | 1 
2 | 4 | 0 
2 | 2 | 0 
2 | 1 | 1