取餘,遵循儘可能讓商向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)
--------------------------------------------------------------------------------------------------------------------------
2017-7-28修改:
解釋:為什麼遵循的是這樣的原則?
在matlab中,關於取餘和取模是這麼定義的:
當y≠0時:
取餘:rem(x,y)=x-y.*fix(x./y)
取模:mod(x,y)=x-y.*floor(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
取餘,遵循儘可能讓商向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)
--------------------------------------------------------------------------------------------------------------------------
2017-7-28修改:
解釋:為什麼遵循的是這樣的原則?
在matlab中,關於取餘和取模是這麼定義的:
當y≠0時:
取餘:rem(x,y)=x-y.*fix(x./y)
取模:mod(x,y)=x-y.*floor(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