1. 程式人生 > >【轉】取模(mod)與取餘(rem)的區別——Matlab學習筆記

【轉】取模(mod)與取餘(rem)的區別——Matlab學習筆記

對於整數a,b來說,取模運算或者求餘運算的方法要分如下兩步:

 1.求整數商:c=a/b 

2.計算模或者餘數:r=a-(c*b) 

求模運算和求餘運算在第一步不同 取

餘運算在計算商值向0方向捨棄小數位 

取模運算在計算商值向負無窮方向捨棄小數位 例如:

4/(-3)約等於-1.3 在取餘運算時候商值向0方向捨棄小數位為-1 

在取模運算時商值向負無窮方向捨棄小數位為-2 

所以 

4rem(-3)=1 4mod(-3)=-2

取餘,遵循儘可能讓商向0靠近的原則 取模,遵循儘可能讓商向負無窮靠近的原則 符號相同時,兩者不會衝突。 

比如,7/3=2.3,

產生了兩個商2 和3 7=3*2+1或7=3*3+(-2)。

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

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

比如,7/(-3)=-2.3,

產生了兩個商-2和-3 7=(-3)*(-2)+1或7=(-3)*(-3)+(-2)。

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

通常,取模運算也叫取餘運算,

它們返回結果都是餘數.rem(取餘)和mod(取模)唯一的區別在於: 

當x和y的正負號一樣的時候,兩個函式結果是等同的;

當x和y的符號不同時,rem函式結果的符號和x的一樣,而mod和y一樣。