取餘和取模

之前我的認知裏一直以爲取餘和取模是一回事,直到那天他們在討論關於這個,才意識到並不是這樣,這裏進行總結一下。

在數學裏面,我們接觸到的餘數都是大於0的,但在編程中,就會存在有正有負的情況。編程中,這兩種計算的機制不同,Mod採用fix函數,Rem採用floor函數,這兩函數都是用來取整的,fix向0方向舍入,floor向無窮小方向舍入。
取模(Mod)和取餘 (Rem)我們都是用 " % "來表示
首先,他們的區別是:

取餘:向0方向捨棄小數位,遵循儘可能讓商大的原則。
取模:向負無窮方向捨棄小數位,遵循儘可能讓商小的原則。

在商和除數同號時,取模和取餘 的結果是相同的。
看幾個栗子:

取餘 取模
3%2 1 1
-3%-2 -1 -1
-3%2 -1 1
3%-2 1 -1

總結:取餘運算的結果正負性和除數保持一致,取模運算結果和被除數保持一致。

不同編譯語言對應的"%"所代表的含義不同,

取模運算 python
取餘運算 C/C++、C#、Java、Golang、PHP

因此在程序移植時我們要注意到這一點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章