## Matlab浮点数累加误差引起的判断错误
第一次发文,记录一下,用词不当,还望指正。
在使用Matlab的过程中,进行了如下的一次循环,(Q_site=[0,2],sub_Q初始化为1),如果使用(Q_site[1,sub_Q]+0.1==i)直接判断二者是否相等,在i循环至0.5时,由于浮点数累加导致的误差,此时的if值为假,无法进入if语句,从而无法得到后续的正确结果。在浏览了相关博客之后,采用abs(i-(Q_site(1,sub_Q)+0.1))
for i=0:0.1:sum_span
if (abs(i-(Q_site(1,sub_Q)+0.1))<100*eps)&&(i>0)
value_of_shear(1,index)=value_of_shear(1,index-1)-0.1*Q_value(1,(sub_Q+1)/2);
if (Q_site(1,sub_Q)+0.1)+100*eps
Q_site(1,sub_Q)=Q_site(1,sub_Q)+0.1;
digit=digit+1;
else
if sub_Q
sub_Q=sub_Q+2;
end
end
signal=1;
sign=1;
end
end
标签:sub,0.1,浮点数,site,累加,Matlab
来源: https://blog.csdn.net/qq_51143272/article/details/111357257