取模和取餘的區別

其實取模和取餘在目標上是一致的,但是因爲語言對取餘和取模上定義的不同,導致得到的結果不同。

對取餘和取模定義不同的語言中,兩者的不同點只有一個

取餘運算在計算商值向0方向捨棄小數位
取模運算在計算商值向負無窮方向捨棄小數位
同時,也可以這樣理解:

取餘,遵循儘可能讓商大的原則
取模,遵循儘可能讓商小的原則
從上面的區別可以總結出,取餘(rem)和取模(mod)在被除數、除數同號時,結果是等同的,異號時會有區別,所以要特別注意異號的情況。

下面來看一些例子

取模

5 mod 3 = 2
-5 mod 3 = 1
5 mod -3 = -1
-5 mod -3 = -2
取餘

5 rem 3 = 2
-5 rem 3 = -2
5 rem -3 = 2
-5 rem -3 = -2
經過測試,在C/C++, C#, JAVA, PHP這幾門主流語言中,’%’運算符都是做取餘運算,而在python中的’%’是做取模運算。

此外,餘數在數學中的定義是始終大於等於0的,而對於某些編程語言的取餘運算不是按照上面的定義來執行的,因此纔會出現餘數小於0的情況。

說了這麼多,我們在使用取模(取餘)運算時要注意的地方有一個,當除數和被除數出現異號的情況時,程序移植的時候要特別小心,因爲不同語言對取模和取餘的定義可能是不同的。

部分參考:https://blog.csdn.net/chensilly8888/article/details/42834697

轉載原文:https://blog.csdn.net/coder_panyy/article/details/73743722 

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