最近在仿真,初次接触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函数
博客讨论了在MATLAB中遇到的小数点精度问题,导致循环次数比预期多一次。作者通过示例展示了当使用0.01作为步长进行循环时,由于浮点数精度误差,循环会额外执行一次。解决方法是通过使用round函数来控制精度,确保循环条件的准确判断。
1万+

被折叠的 条评论
为什么被折叠?



