【MATLAB】小数点精度问题导致while循环中的错误

最近在仿真,初次接触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函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值