2 robbie0 robbie0 于 2016.04.20 21:14 提问

matlab程序进不了if语句,求解答

t=0.0;
dt=0.01;
m=0;
while(t<=5.0)
if(t==1.0)
m=m+1;
end
t=t+dt;
end
为什么进不了if语句呢?

4个回答

caozhy
caozhy   Ds   Rxr 2016.04.20 22:44

浮点数的比较应该用两数相减取绝对值小于某个很小的数的方式进行,因为浮点数可能存在误差。

lxd567
lxd567   2016.06.30 19:04

我运行了下你的程序,稍微改了下数据如下:
t=0.0;
dt=0.01;
m=0;
while t<=2.0
if t == 0.1
m=m+1;
end
t=t+dt;
end
我是单步执行的,当t=0.01的时候,命令窗口里面的结果也是有些费解:
K>> t

t =

0.100000000000000

K>> t-0.1

ans =

-1.387778780781446e-17

    请牛人来回答吧
lxd567
lxd567   2016.06.30 19:08

caozhy 的回答有道理

lxd567
lxd567   2016.06.30 19:12

改成if abs(t-0.1)<=eps 应该可以

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!