【轉】取模(mod)與取餘(rem)的區別——Matlab學習筆記
阿新 • • 發佈:2019-02-04
對於整數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一樣。