matlab用双精度编程,如何在Matlab中得到一个单、双精度数的整数部分和小数部分?...

对于一个单、双精度数,获得其单独的整数部分或小数部分在一些程序中有特殊的作用。如对一个数进行去模运算、对一幅图像进行剪切使其高、宽是某个数的整数倍等等。

对于取整,在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()来代替前面的程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值