取模(mod)與取餘(rem)的區別——matlab學習筆記【09-11-15】
昨天在學習matlab的數學函式時,教程中提到取模(mod)與取餘(rem)是不同的,今天在網上具體查了一下:
通常取模運算也叫取餘運算,它們返回結果都是餘數.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
慢慢體會,兩者確實不一樣
Matlab 取模(mod)和取餘(rem)的區別
通常取模運算也叫取餘運算,它們返回結果都是餘數.rem和mod唯一的區別在於 當x和y的正負號一樣的時候,兩個函式結果是等同的 當x和y的符號不同時,rem函式結果的符號和x的一樣,而mod和y一樣。這是由於這兩個函式的生成機制不同,rem函式採用fix函式,而mod函式採用了floor函式 這兩個...
Matlab中取模 mod 與取餘 rem 的區別
取模 mod 與取餘 rem 是不同的,通常取模運算也叫取餘運算,它們返回結果都是餘數。rem和mod唯一的區別在於 當x和y的正負號一樣的時候,兩個函式結果是等同的 當x和y的符號不同時,rem函式結果的符號和x的一樣,而mod和y一樣。這是由於這兩個函式的生成機制不同,rem函式採用fix函式,...
取模與取餘的區別
其實取模和取餘在目標上是一致的,但是因為語言對取餘和取模上定義的不同,導致得到的結果不同。對取餘和取模定義不同的語言中,兩者的不同點只有乙個 取餘運算在計算商值向0方向捨棄小數字 取模運算在計算商值向負無窮方向捨棄小數字 同時,也可以這樣理解 從上面的區別可以總結出,取餘 rem 和取模 mod 在...