回覆列表
  • 1 # 睿新教育

    1. 模運算的計算原理是這樣的:

    假設想求的a = x%y,a的值是透過如下公式算出來的:

    a = x - (x/y)*y,且除法是按照整數除法來運算的

    所以將你的數字代入公式:

    -17%10 = -17 - (-17/10)*10 = -17 - (-2)*10 = 3.

    產生這個結果的關鍵在於程式的取模公式,保證了

    y是正數,模運算的結果就是[0,y),

    y是負數,模運算的結果就是(y,0]

    2. 通常人們希望整除的商和餘數會有這樣的特性:

    1. 被除數 = 除數*商 + 餘數

    2. 被除數符號變化,商的符號也變化,而絕對值不變

    3. 餘數的符號和除數相同

    但實際上這 3 條不能總是符合的,第 1 條是肯定要符合的。

    舉例來說,3/2 為 1,3%2 為 1,如果要符合第 2 條,那就是 -3/2 為 -1,-3%2 為 -1,它是不符合第 3 條的;而如果要符合第 3 條,則是 -3%2 為 1,-3/2 為 -2,它是不符合第二條的。

    所以一般程式語言會在第 2 或者 第 3 條中選擇一條,python 選擇的就是滿足第 3 條的方式。很多其它的語言選擇的是第 2 條。所以在 python 中,-17%10 為 3,而 -17/10 為 -2

    注,在 python 3 中 / 表示除法,不表示整除,所以 -17/10 在 python 3 中為 -1.7,兩個 / 才表示整除: -17//10 為 -2

  • 中秋節和大豐收的關聯?
  • 巴西龜最大能長多大?能活多少歲?