取模与取余的不同
通常情況下,我們對取余和取模混為一談,但是這兩個是不一樣的。我們在c c++ java python里面都是用%表示取模或者取余的,但是我們分別用這四門語言去計算-1%3這個式子發(fā)現(xiàn)結果并不一樣,原因是在c c++ java里面%表示取余,而在python里面%表示取模。
在我們進行計算的兩個數(shù)符號一樣時,取余和取模的結果是一樣的,因為符號一樣時利用下面公式計算出來的a/b總是非負數(shù),也就是說這個時候無論事取余還是取模計算出來的c是一樣的,所以這里我們不在討論。
在進行計算的兩個數(shù)符號不一樣時,取余和取模的結果是不一樣的,究其原因是下面公式中在計算c的時候趨向不同。
對于整數(shù)a,b來說,取余和取模都有著下面這個關系:
1:求整數(shù)的商 c = a / b
2:計算模或者余數(shù) r = a - c * b
取余和取模的不同之處就是在c這里的不同,取余運算我們是盡可能的向0方向舍去小數(shù)位,比如-1/3是-0.33333,我們就取c為0,然后計算r = -1 - 0 * 3,即r為-1;
取模運算是盡可能向負無窮的方向舍去小數(shù)位,比如-1/3是-0.33333,我們就取c是-1,然后計算r = -1 - ( -1)?* 3,及c是2。
下面我們再舉一個例子 -7 % 4
1.這里a是-7, b是4,我們計算-7 / 4 = -1.75?
2.取余:盡可能向0舍去小數(shù)位,即c取-1?
? ?取模:盡可能向負無窮舍去小數(shù)位,即c取-2
3.取余:r = -7 - (-1) * 4,即 r 為 -3
? ?取模:r = -7 - (-2) * 4,即 r 為1
下面我們再舉一個例子 7 % -4
1.這里a是7, b是-4,我們計算7 / -4 = -1.75?
2.取余:盡可能向0舍去小數(shù)位,即c取-1
? 取模:盡可能向負無窮舍去小數(shù)位,即c取-2
3.取余:r = 7 - (-1) * (-4),即 r 為 3
? 取模:r = 7 - (-2) * (-4),即 r 為-1
下面我們分別是java?c c++ python的測試結果:
?
總結