最近在仿真,初次接触MATLAB,发现有小数点精度的问题。
比如:
每次Stime+0.3,应该循环1200次
Endtime = 360;
loop = 0;
Stime = 0
while Stime < Endtime
loop = loop + 1
Stime = Stime + 0.3
end
但是有时候会出现多循环一次的情况:
Endtime = 360;
loop = 0;
Stime = 0;
a = 0.0009 + 0.0001 + 0.009;
while Stime < Endtime
loop = loop + 1;
Stime = Stime + a;
end
每次加0.01,应该循环36000次,可是实际上循环多了一次,是36001次:
看此时的Stime:
并没有真正到360.01,所以在倒数第二次循环的时候,也没有到360,所以会跳到下一次循环,导致多了一次循环。
解决方法:
可以控制精度,用round函数