- 在线时间
- 2 小时
- 最后登录
- 2011-10-21
- 注册时间
- 2009-7-12
- 听众数
- 14
- 收听数
- 0
- 能力
- 0 分
- 体力
- 2150 点
- 威望
- 17 点
- 阅读权限
- 50
- 积分
- 932
- 相册
- 0
- 日志
- 0
- 记录
- 1
- 帖子
- 192
- 主题
- 26
- 精华
- 2
- 分享
- 0
- 好友
- 6
升级   83% TA的每日心情 | 开心 2011-10-21 21:58 |
|---|
签到天数: 13 天 [LV.3]偶尔看看II
- 自我介绍
- 进化中。。。。。。。。
 |
昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
7 `9 k q8 b* [8 l1 C# {5 B& V( ?% _
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
8 I8 { H% S; W' i1 {( I" r 当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。# w. y. m5 H7 ^, `+ x, U! w/ u
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。7 Q X' U4 e, u2 M- }: a
rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
! V- @0 K3 `$ t. m( x; c% I" g( R; _: A3 s; a4 S9 O8 \1 d o
4 `, ?0 t( D* E; R* Q) k两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
/ P9 B; x7 G/ d3 R$ `1 R
t* J! z' p6 w g0 w! U& I先将两个整数看作是正数,再作除法运算; J# N+ k3 v+ J- I/ U B
①能整除时,其值为0
: J( j s3 e" X, J$ B- Z②不能整除时,其值=除数×(整商+1)-被除数
_: X, F+ d4 g* O( B
- |( W Q- h$ R/ ?9 C* V例:mod(36,-10)=-4
+ \& v) P! o- y5 i+ R" e即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。 ( ~" h0 s2 c; \* M5 H
例:mod(9,1.2)=0.65 f l; W5 ^7 u! a/ \& Y0 Z% X% R
例:
& Y' j0 J* j+ b, e. z>> mod(5,2)
$ T( u1 X4 {6 @# \9 s5 mans =1 %“除数”是正,“余数”就是正+ S6 [& R R) L5 v+ b/ _8 `
>> mod(-5,2)0 k V( g! q+ F$ A8 k! \$ X, c
ans =1
6 [& [% N4 P: l- j5 o) k) Y, u* g1 J- z>> mod(5,-2)/ R4 Z- o1 v$ J- t' s+ Q+ C
ans =-1 %“除数”是负,“余数‘就是负7 a+ E' |, N. ~1 j: n* }
>> mod(-5,-2)5 L0 ]% n4 S- M( l* t
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
' T$ X8 K5 y; n' ~/ c* p>> rem(5,2)1 L8 R0 j4 ~. S) e( G0 a
ans =1 %“被除数”是正,“余数”就是正
/ t: n3 Z4 C" S; d9 X>> rem(5,-2)
, w* w6 Q2 q* H# g4 aans =1' k) T* `/ b4 A; K
>> rem(-5,2)" a5 f$ A4 U* \3 Y, @6 H; n- u
ans =-1 %“被除数”是负,“余数”就是负5 r) F* j* [9 `( t$ s! ^4 I6 n
>> rem(-5,-2)
1 X1 Q% V4 w7 v$ m: `) kans =-14 u- W! d9 o! h4 m% W
( I5 |# _2 ?% X9 P; H, N2 W0 v
1 Q! ^! I* q1 c& s. }& Y慢慢体会,两者确实不一样 |
zan
|