- 在线时间
- 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)是不同的,今天在网上具体查了一下:
, b6 P5 m4 C6 W# ? ^3 z7 i) i9 w; \: C
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:& q% G+ J& M, Z, Y
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。5 Z- G O- O1 A. U4 B
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。( x2 k3 }* h* {0 ^8 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)
$ ]" f2 y. b, c! @5 o, w* s- B
1 V& t2 ^2 d* E) g5 ^1 R: S& C3 ]/ k( q' ^
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)( z4 u& x9 u/ o# e8 J. M; O0 g6 b
& P4 H/ l) r. n2 V3 }7 \9 g
先将两个整数看作是正数,再作除法运算9 t1 L2 S4 A, Q0 U1 ?: ?) ]0 H( }
①能整除时,其值为0
6 u1 z) }+ V z: P& x②不能整除时,其值=除数×(整商+1)-被除数" P! v( ~: e/ D
# m9 d$ c* F+ S2 p& a, n例:mod(36,-10)=-4# a+ U4 V9 b. @7 \2 ~
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。 . Z0 D8 }1 h! O2 n
例:mod(9,1.2)=0.60 s3 o- l c+ u* s" O) P" I
例:
" F3 [3 L; A, G x m& P>> mod(5,2)
( Q0 o0 @- f t5 s; g" Vans =1 %“除数”是正,“余数”就是正
o' R; I5 u) a5 ~% s) y9 C>> mod(-5,2)
7 U0 Z4 E0 Y) g" o, `& C/ Z8 Tans =1
! Q* g- r5 u6 F; Z+ Q/ t: O, a>> mod(5,-2)
! e% E1 j2 y' X# @5 xans =-1 %“除数”是负,“余数‘就是负6 a% r1 d0 X' m1 P) f
>> mod(-5,-2)$ q1 t% B& W* ~. _. S
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同3 n3 K3 k; t4 W+ H
>> rem(5,2)8 w/ V( ]1 r: h) h: v; f
ans =1 %“被除数”是正,“余数”就是正
o5 m1 q& }' F) n* e+ `>> rem(5,-2)
* r1 b3 }: D5 z/ Q$ t8 U0 ?ans =1( ^! Y4 z3 {4 s6 y9 V8 i/ x8 D8 M9 V
>> rem(-5,2)
1 O' u1 i+ Z$ n7 I" f: u% z8 Z( Yans =-1 %“被除数”是负,“余数”就是负
* }$ [0 \4 a$ a* _# [>> rem(-5,-2)
6 b5 X \8 j) s' N8 y$ g# _5 Q/ Yans =-1: s+ @2 j* H1 q% @, A4 ?7 t
& _ F5 U x+ z. I, g
: q; ^; J0 {2 _: `$ y' ]9 v S慢慢体会,两者确实不一样 |
zan
|