模數(mod)與取餘(rem)的區別——Matlab學習筆記

來源:互聯網
上載者:User

http://www.madio.net/forum-viewthread-tid-91108-extra-page%3D1%26filter%3Dlastpost%26dateline%3D7948800-ordertype-1.html

 

昨天在學習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

慢慢體會,兩者確實不一樣


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.