matlab中数值溢出问题

a=100;
b=100;
c=100;
a,b,c都是unit8数值类型的,所求问题很简单,求a,b,c三个数的和

d=a+b+c;
d=255;
此处是因为加和溢出了,所以d是255,求不出a,b,c的和

e=double(a+b+c);
e=255;
其实这个操作相当于是:
d=a+b+c;
e=double(e);
所以是先没有和溢出,然后再强制类型转化的,所以这样操作是没有用的

正确的做法是:
aa=double(a);
bb=double(b);
cc=double(cc);
d=aa+bb+cc;
d=300;
先把每个数都强制转换成double类型的,再进行相加,就不会出现溢出的情况

总结:按照C语言的思维写matlab程序,很容易出现一些很难发现的bug,因为C语言是有自动转换数据类型这一说的。所以在以后写matlab程序的时候,一定要注意数值溢出问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值