2009-02-04 39 views
-2

python 2.6 docs指出x % y被定義爲x/y的其餘部分(http://docs.python.org/library/stdtypes.html#numeric-types-int-float-long-complex)。我不是對什麼是真正發生的,雖然,清晰:Python商數vs餘數

for i in range(2, 11): 
    print 1.0 % i 

打印 「1.0」 的十倍,而不是 「0.5,0.333333,0.25」 等我預料(1/2 = 0.5,等等) 。

+1

您令人困惑的商和餘數。 – hop 2009-02-04 01:16:51

+0

也許我需要點擊維基百科,但以下是我如何使用這些詞:商數是結果中的整數部分,餘數是小數部分。例如,對於8.0/3,商= 2,其餘= 0.6666。那是錯誤的嗎? – 2009-02-04 01:19:40

+1

是的,這是錯誤的。其餘的是2.這是什麼_remains_後,你已經反覆減去減數(從不加),直到你不能再減少 – hop 2009-02-04 01:23:32

回答

8

我認爲你可以做這樣的事情得到你想要的結果:

for i in range(2, 11): 
    print 1.0*(1 % i)/i 

此計算爲他人解釋(整數)的餘數。然後再用分母除以產生商的小數部分。

請注意,我將模運算的結果乘以1.0以確保完成浮點除法操作(而不是整數除法,結果爲0)。

10

Modulo在整數上下文中執行,而不是小數(其餘部分是整數)。因此:

1 % 1 = 0 (1 times 1 plus 0) 
1 % 2 = 1 (2 times 0 plus 1) 
1 % 3 = 1 (3 times 0 plus 1) 

6 % 3 = 0 (3 times 2 plus 0) 
7 % 3 = 1 (3 times 2 plus 1) 
8 % 3 = 2 (3 times 2 plus 2) 

etc 

我如何獲得x/y的實際剩餘?

因此,我認爲你的意思是做定期浮點除法?

for i in range(2, 11): 
    print 1.0/i 
3

不會將1除以大於0的餘數,餘數爲1?

人羣中的數字理論家可能會糾正我,但我認爲模數/餘數僅在整數上定義。

4

您已經對divisionmodulus感到困惑。

「0.5 0.333333,0.25」 等,如我的預期(1/2 = 0.5等)。」

除法的結果

模量

模數(%)是整數除法後剩下的餘數

您的示例值爲簡單除法,即/運營商。不是%運營商。

1

我們可以有2種類型的劃分,我們可以通過返回類型定義:

浮子:A/B。例如:3/2 = 1.5

def division(a,b): 
    return a/b 

Int:a // b和a%b。例如:3 // 2 = 1和3%2 = 1

def quotient(a,b): 
    return a//b 
def remainder(a,b): 
    return a%b