对于一个单、双精度数,获得其单独的整数部分或小数部分在一些程序中有特殊的作用。如对一个数进行去模运算、对一幅图像进行剪切使其高、宽是某个数的整数倍等等。
对于取整,在C语言中有专门的取整符号[],在Matlab中三种方法实现
(1)数据类型转换
可以采用数据类型变换的方法进行。
a=12.356;
b=double(uint16(a)); %这里利用了浮点数变无符号整型数时的四舍五入的特点
if a
b=b-1; %若b>a,说明是五入的情况,故要减去1
end % b就是其整数部分
等到了整数部分,小数部分就好办了:
c=a-b;
(2)取余数
如果知道被除数、除数,求其商的整数部分和小数部分,这时可以采用Matlab中的去模函数mod();直接得到整数部分,当然小数部分也就得到了
m=258;
n=13;
m0=mod(m,n); %去模
b=(m-m0)/n; %整数部分
c=m/n-b; %小数部分
也可以使用取余数的函数rem,代替去取模函数,
m=258;
n=13;
m0=rem(m,n); %取余数
b=(m-m0)/n; %整数部分
c=m/n-b; %小数部分
(3)直接使用相关函数
利用几个函数可以更方便快捷的得到整数部分,但其结果是有差别的,使用时请大家注意,并灵活应用。
floor(x):得到不大于x的整数值;
round(x):得到最接近x 的整数值;
ceil(x):得到不小于x的整数值;
fix(x):得到绝对值不大于x绝对值的整数值。
举例如下:
若x=[ -1.9 -0.2 3.4 5.6 7.0 2.4+3.6i
],则floor(x)、round(x)、ceil(x)和fix(x)的值分别如下:
-2.0 -1.0 3.0 5.0 7.0 2.0+3.0i
-2.0 0
3.0 6.0 7.0 2.0+4.0i
-1.0 0
4.0 6.0 7.0 3.0+4.0i
-1.0 0
3.0 5.0 7.0 2.0+3.0i
函数fix()满足我们一般取整数部分的要求。对于正数,可以用函数floor()和fix()来代替前面的程序。