matlab——fix,floor,ceil,round区别
总结为:fix朝零方向取整,floor朝负无穷方向取整,ceil朝正无穷方向取整,round四舍五入到最近的整数
(1)fix(x):截尾取整。如:
>> fix([3.4 , -3.4])
ans =
3 -3
(2)floor(x):高斯取整(不超过x的最大整数)。如:
>> floor([3.4 , -3.4])
ans =
3 -4
(3)ceil(x) : 大于x 的最小整数。如:
>> ceil([3.4 , -3.4])
ans =
4 -3
(4)round(x):四舍五入取整。如:
>> round([3.4 , 3.6 , -3.4 , -3.6])
ans =
3 4 -3 -4
取模(mod)与取余(rem)的区别
通常取模运算也叫取余运算,它们返回结果都是余数,rem和mod唯一的区别在于:
rem(a,b) 与 mod(a,b)
当a和b的正负号一样的时候,两个函数结果是等同的;
当a和b的异号时(当是小数时也是这个运算规律),rem结果与a相同,而mod结果与b相同
这是由于这两个函数的生成机制不同,
rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix朝零方向取整,floor朝负无穷方向取整)。
rem(x,y)返回的是x-n.*y,当y不等于0时,n = fix(x./y),
mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
即:公式是:值 = 被除数 - (商 * 除数),(商通过floor或fix函数得到)
例:mod(36,-10)=-4
例:mod(9,1.2)=0.6;
例:mod(-1000 , 201) = -1000 - (-5 * 201) = 5
例:mod(1000 , -201) = 1000 - (-5 * -201) = -5
>> mod(5,2)
ans =1 %“除数”是正,“余数”就是正
>> mod(-5,2)
ans =1
>> mod(5,-2)
ans =-1 %“除数”是负,“余数‘就是负
>> mod(-5,-2)
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
>> rem(5,2)
ans =1 %“被除数”是正,“余数”就是正
>> rem(5,-2);
ans =1
>> rem(-5,2)
ans =-1 %“被除数”是负,“余数”就是负
>> rem(-5,-2)
ans =-1