- 在线时间
- 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)是不同的,今天在网上具体查了一下:+ U; P8 p# q0 P& H E/ w2 o
4 |- l2 }/ s- F3 Z" y通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:; e9 ~ A8 I$ {& ]
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
% n$ z' W# n9 E! E 这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。" ]& r7 `8 C- U. ~6 K
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 f9 I; e% u3 x4 o' v$ c8 Q1 f- z% H0 W2 |0 M- e! ]
% P# [, a+ k! P+ i* @6 I
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
1 q9 w2 E% F4 p4 c1 Q! L$ C/ E1 G: t; k
先将两个整数看作是正数,再作除法运算
% K! ^+ ?" x" v) i①能整除时,其值为0, B: k& A0 u4 g7 q# a5 p
②不能整除时,其值=除数×(整商+1)-被除数. y7 I" P6 M/ p @( Y4 Z* p; v
6 W) ?# ~0 D( Z! f例:mod(36,-10)=-41 h" V# a, @4 }
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。 + n* ^. y3 ^- B
例:mod(9,1.2)=0.6) [5 j( k3 l$ A6 d. ^" x
例:% p# d* Q$ \" S4 O
>> mod(5,2)7 k2 M+ L5 c3 E4 {. }& W
ans =1 %“除数”是正,“余数”就是正/ C9 Y+ `* F+ p9 _. }
>> mod(-5,2), C; n! |6 o) A# U9 t% l1 N
ans =1' V" [/ P" [" b
>> mod(5,-2)
4 S! F! ]% a4 Z9 g% w( e5 e/ C) z$ vans =-1 %“除数”是负,“余数‘就是负
! Z# x8 A0 t9 j6 I1 K' I$ p>> mod(-5,-2)+ t! r1 B/ a8 z+ L, Z7 A6 W; W# y* w. h+ `
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同+ T9 k2 K6 f2 B. a2 w2 G- }6 G
>> rem(5,2)0 w9 n1 b; b7 y# F W% H2 ~# p9 y
ans =1 %“被除数”是正,“余数”就是正* \$ n" w% T5 R$ p' D, M
>> rem(5,-2)4 c2 O3 ]; z1 d4 v0 W6 X
ans =1
! [1 ~9 r) H& l4 Y>> rem(-5,2)( ?5 N: @/ D; I, K" W
ans =-1 %“被除数”是负,“余数”就是负
3 u3 p- a, c6 E \: Z5 f9 S>> rem(-5,-2)
+ T2 G( y2 r8 D: bans =-12 ^& y) B, y7 C2 C
! f$ ]1 D9 i3 R+ x& n/ D
5 |4 Y* J9 R6 Z' B% s4 K
慢慢体会,两者确实不一样 |
zan
|