- 在线时间
- 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)是不同的,今天在网上具体查了一下:/ ^9 ?4 r* p2 ?7 s" `
. {& g, e6 J9 H6 y通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:( O5 X1 L3 r6 Q, ^/ O
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
& `/ `7 G9 B2 [ 这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。9 h" I4 \9 O% _ J0 l' b- I
rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)2 q8 l( K( C0 D# ^3 n
7 _2 A8 E1 I+ ?/ E3 Z3 N1 u
7 o/ ~3 f; `& ?, t, H5 H, t两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)! \* M' {: ^: j7 L7 J$ I
5 a4 x" B! e' T D$ N
先将两个整数看作是正数,再作除法运算
2 O1 G! }3 E& H①能整除时,其值为0+ q8 s9 t: A6 R: O, ?
②不能整除时,其值=除数×(整商+1)-被除数4 X# r; l8 i; g5 T2 e' { u
V" ~! \, P. ~5 ~例:mod(36,-10)=-45 Z- I% P h) j( E2 l0 T
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
( {9 l' t% `" n' l0 z7 H例:mod(9,1.2)=0.6 K8 F% u; [2 u$ Q; X
例:% W1 n% c/ w: s8 ~
>> mod(5,2)
5 t0 l. D" I) _+ Yans =1 %“除数”是正,“余数”就是正1 U5 y- `& }7 `9 E+ `* E, D2 B
>> mod(-5,2)# {. c! v2 s# L4 k6 I$ N& a
ans =17 m$ F R. e& d. [" [
>> mod(5,-2)8 E8 R% c! P* p& N1 k& t* y* ^
ans =-1 %“除数”是负,“余数‘就是负% L+ e9 l# x- [. Y% Q6 M, B
>> mod(-5,-2)1 l$ j. S% x8 e5 \+ ^. G
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
8 k4 C/ U$ ?( Q# y! P3 F- J/ M>> rem(5,2)
1 V. K) v( l2 B; qans =1 %“被除数”是正,“余数”就是正
; C2 M! W3 w! A& W# {0 i>> rem(5,-2)7 r9 l; Q9 l9 {6 v) w L' \# V
ans =10 t) n# i/ h) l3 a9 P
>> rem(-5,2)
. z3 |5 j& C6 b @ans =-1 %“被除数”是负,“余数”就是负
( V c2 c+ B8 z# E; Q>> rem(-5,-2)
. Z) I$ _! G2 }8 b; s0 |ans =-1; R9 W) ?" ?# w8 `2 G( O
7 ~: |1 ?5 Z9 O* B* `* h8 ?3 o) E' {$ e
慢慢体会,两者确实不一样 |
zan
|