通常取模運算也叫取余運算,,它們返回結(jié)果都是余數(shù) .rem 和 mod 唯一的區(qū)別在于: 當 x 和 y 的正負號一樣的時候,,兩個函數(shù)結(jié)果是等同的;當 x 和 y 的符號不同時,,rem 函數(shù)結(jié)果的符號和 x 的一樣,,而 mod 和 y 一樣。 這是由于這兩個函數(shù)的生成機制不同,rem 函數(shù)采用 fix 函數(shù),,而 mod 函數(shù)采用了 floor 函數(shù)(這兩個函數(shù)是用來取整的,,fix 函數(shù)向 0 方向舍入,floor 函數(shù)向無窮小方向舍入),。 rem(x,,y)命令返回的是 x-n.*y,如果 y 不等于 0,,其中的 n = fix(x./y),,而 mod(x,y) 返回的是 x-n.*y,當 y 不等于 0 時,,n=floor(x./y) 兩個異號整數(shù)取模取值規(guī)律 (當是小數(shù)時也是這個運算規(guī)律,,這一點好像與 C 語言的不太一樣) 先將兩個整數(shù)看作是正數(shù),再作除法運算:
例:mod(36,-10)=-4 即:36 除以 10 的整數(shù)商為 3,,加 1 后為 4;其與除數(shù)之積為 40,;再與被數(shù)之差為(40-36=4);取除數(shù)的符號,。所以值為 -4,。 例:mod(9,1.2)=0.6; 例: >> mod(5,2) ans =1 % 除數(shù)是正,余數(shù)就是正 >> mod(-5,2) ans =1 >> mod(5,-2) ans =-1 % 除數(shù)是負,,余數(shù)就是負 >> mod(-5,-2) ans =-1 % 用 rem 時,,不管除數(shù)是正是負,余數(shù)的符號與被除數(shù)的符號相同 >> rem(5,2) ans =1 % 被除數(shù)是正,,余數(shù)就是正 >> rem(5,-2); ans =1 >> rem(-5,2) ans =-1 % 被除數(shù)是負,, 余數(shù)就是負 >> rem(-5,-2) ans =-1 慢慢體會,兩者確實不一樣,。 |
|
來自: 昵稱57214244 > 《待分類》