取模與取餘的區別
阿新 • • 發佈:2021-09-17
通常取模運算也叫取餘運算,它們返回結果都是餘數 rem
和 mod
唯一的區別在於:
當 x 和 y 的正負號一樣的時候,兩個函式結果是等同的;當 x 和 y 的符號不同時,rem 函式結果的符號和 x 的一樣,而 mod 和 y 一樣。
這是由於這兩個函式的生成機制不同,rem 函式採用 fix
函式,而 mod 函式採用了 floor
函式(這兩個函式是用來取整的,fix 函式向 0 方向舍入,floor 函式向無窮小方向舍入)。 rem(x,y)命令返回的是 x-n.*y,如果 y 不等於 0,其中的 n = fix(x./y),而 mod(x,y) 返回的是 x-n.*y,當 y 不等於 0 時,n=floor(x./y)
兩個異號整數取模取值規律 (當是小數時也是這個運算規律,這一點好像與 C 語言的不太一樣)
先將兩個整數看作是正數,再作除法運算:
- 能整除時,其值為 0
- 不能整除時,其值=除數×(整商+1)-被除數
例:mod(36,-10)=-4
即:36 除以 10 的整數商為 3,加 1 後為 4;其與除數之積為 40;再與被數之差為(40-36=4);取除數的符號。所以值為 -4。
例:mod(9,1.2)=0.6
>> mod(5,2) ans =1 % 除數是正,餘數就是正 >> mod(-5,2) ans =1 >> mod(5,-2) ans =-1 % 除數是負,餘數就是負 >> mod(-5,-2) ans =-1 % 用 rem 時,不管除數是正是負,餘數的符號與被除數的符號相同 >> rem(5,2) ans =1 % 被除數是正,餘數就是正 >> rem(5,-2); ans =1 >> rem(-5,2) ans =-1 % 被除數是負, 餘數就是負 >> rem(-5,-2) ans =-1