編程語言中取模和取餘的區別

取餘,遵循儘可能讓商向0靠近的原則。

取模,遵循儘可能讓商向負無窮靠近的原則。

如圖所示:

在這裏插入圖片描述

符號相同時,兩者不會衝突。

比如,7/3=2.3,產生了兩個商2和3

7=3x2+1 或 7=3x3+(-2)。

因此,7rem3=1,7mod3=1。

符號不同時,兩者會產生衝突。

比如,7/(-3)=-2.3,產生了兩個商-2和-3

7=(-3)x(-2)+1或7=(-3)x(-3)+(-2)。

因此,7rem(-3)=1,7mod(-3)=(-2).

爲什麼遵循的是這樣的原則?

在matlab中,關於取餘和取模是這麼定義的:

當y≠0時:

取餘:rem(x,y)=x-y.xfix(x./y)

取模:mod(x,y)=x-y.xfloor(x./y)

其中,fix()函數是向0取整,floor()函數是向負無窮取整。

以前邊的運算爲例:7/(-3)=-2.3,在這個運算中,x爲7,y爲-3,分別調用fix()和floor()兩個函數,得到結果是:

fix(-2.3)=-2

floor(-2.3)=-3,

rem(7,-3)=1,mod(7,-3)=-2

參考連接:https://www.zhihu.com/question/30526656

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