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语句呢?
浮点数的比较应该用两数相减取绝对值小于某个很小的数的方式进行,因为浮点数可能存在误差。
我运行了下你的程序,稍微改了下数据如下:
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
请牛人来回答吧
caozhy 的回答有道理
改成if abs(t-0.1)<=eps 应该可以