- 在线时间
- 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)是不同的,今天在网上具体查了一下:' F' r: h- V5 j! d
# g* J1 v: V% k# e3 a. g4 \
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
/ Q7 b/ n! m9 s. R 当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。. A: Q4 t& Y; J- v1 b. p
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
/ p& c0 J$ P+ { rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
5 M( u& i+ M. ?+ r
]. a, J: ?* k q: c2 Y( o0 ^9 [- r* x3 U: J
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
" W; q) B; W: v$ i! R/ }
/ ^4 D/ ?4 S5 ~! x7 N" _. G5 {先将两个整数看作是正数,再作除法运算
& P/ G% s" b+ X$ M" \/ t* h①能整除时,其值为09 f. G5 p6 t9 G! ]2 ~6 [6 W
②不能整除时,其值=除数×(整商+1)-被除数" [* c0 A- l+ r& V- {
( I- d0 ~1 c# I1 l7 @例:mod(36,-10)=-4 n+ ?2 y6 G5 w! t
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
* K& x, { K2 w& Q. N6 k7 I3 I2 g例:mod(9,1.2)=0.6
9 O4 |0 \& }- E4 B1 i例:1 G# O6 L4 Z) A5 h; R T& ^' i% G
>> mod(5,2)7 C! j: G* C8 ~( @. X3 Y1 e2 j
ans =1 %“除数”是正,“余数”就是正3 s' y$ |) m# y( A \
>> mod(-5,2)* j+ Y( }# L5 L
ans =1
/ o1 { o) m3 o" f>> mod(5,-2)" _) B, r1 x- R! g) H! m/ _
ans =-1 %“除数”是负,“余数‘就是负
; S7 [$ U6 L: u3 G# }0 a* D( W+ K>> mod(-5,-2)' J! s( t+ Y8 V' J) c8 {
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
) `% w! h( r) s; n) b1 r) {>> rem(5,2)7 U! G& z3 m" N& I9 v, p4 p
ans =1 %“被除数”是正,“余数”就是正. _2 E' E* u' |: Q9 \. f5 G. k, y
>> rem(5,-2)
) o! h( o( X7 i! U9 x+ jans =1
! [% q( z0 f! z/ z>> rem(-5,2)
$ H* R" z. W! ?0 [ans =-1 %“被除数”是负,“余数”就是负- Y% o: E7 ^# R7 Q. z% d
>> rem(-5,-2)* I3 v" C+ `' X2 E
ans =-1
: L' R% s8 K. @2 A' Q
1 y2 [! R9 m" ?* c- A1 j! O; Z7 [' v6 ?+ y7 K, j# k& n" L& \5 L! z
慢慢体会,两者确实不一样 |
zan
|