- 在线时间
- 57 小时
- 最后登录
- 2013-10-20
- 注册时间
- 2012-3-19
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 1080 点
- 威望
- 0 点
- 阅读权限
- 40
- 积分
- 433
- 相册
- 0
- 日志
- 0
- 记录
- 7
- 帖子
- 196
- 主题
- 13
- 精华
- 0
- 分享
- 82
- 好友
- 20
升级   44.33% TA的每日心情 | 开心 2013-10-20 20:29 |
|---|
签到天数: 103 天 [LV.6]常住居民II
- 自我介绍
- 建模编程方向
 群组: 学术交流A |
取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】
. ~2 X& i2 s0 A本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者' k0 Z9 V6 a3 ~# ]1 I
昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
3 @$ S$ W. G7 R9 r. P* E, I# L2 v7 B2 j+ A8 S
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:4 ^8 c2 D" M6 y* K/ j$ ^" G
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。7 T- F8 S" @4 i( c3 S# h$ K7 Q( P
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。' j) q3 g9 x& u& n/ `
rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
: i, ^* [% t- s6 r
" W: a$ G/ E- Z) P1 P9 d; Z* L+ E8 y+ Z( Q+ U+ P' @; g7 G
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样). D/ P; k$ `# q0 \+ q
) M7 \) Y# }( k6 G: J先将两个整数看作是正数,再作除法运算
2 O# \/ I$ ^9 l/ k7 r①能整除时,其值为0- q# q* g# c+ p" u) D( Z# t5 _4 I
②不能整除时,其值=除数×(整商+1)-被除数: h0 _! a9 K$ l1 b
( K5 m" f& o9 m( x/ k9 e K" I
例:mod(36,-10)=-4, w2 B7 h3 t4 |4 b. E6 \' R3 _& b d
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。1 l4 y6 u+ |4 `: A5 d0 U. ~
例:mod(9,1.2)=0.6
2 X- P" P. O. `! ^' f" H& R9 P' e例:
' d; x7 W4 D" |2 t5 V>> mod(5,2)# E7 |" k) m4 E
ans =1 %“除数”是正,“余数”就是正
- c9 @) l; j( ?>> mod(-5,2)2 Y7 F) `$ V, }: v1 f
ans =1
" G% r1 d& r5 v% q>> mod(5,-2)+ H0 R) \# S0 o
ans =-1 %“除数”是负,“余数‘就是负
5 e4 t5 s7 E$ H$ r* k>> mod(-5,-2)
, S. V6 v5 [9 Eans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
$ W5 T5 S3 O0 ^% A>> rem(5,2), F0 n$ z( b0 W- F7 E
ans =1 %“被除数”是正,“余数”就是正
+ L L- U& v9 Y* A3 W. O8 Z2 P% Z>> rem(5,-2)8 `: J: N. L) ?7 t
ans =1
# }5 ]+ u( v9 x j& K3 Y>> rem(-5,2), W2 o: M, u: x* x) O
ans =-1 %“被除数”是负,“余数”就是负
0 l% Y0 X- Q8 Y' ?! D' I$ r2 f>> rem(-5,-2)
) Q$ e7 Q- s: o' ]ans =-1% b5 b7 G; N1 O4 d
) j" Q) Q6 k# X: w. D
) t# O6 j* l* B% Q" \6 z& I
慢慢体会,两者确实不一样% w' K, C) {+ S, O8 q* C; i0 ?
|
zan
|