我正在尝试在 for 循环中测试迭代变量的值,但没有得到我期望的值,所以我假设我误解了 matlab 的工作方式和/或我是做错了可怕的事....
有人可以解释为什么当 x 达到 0.2 时这段代码中的 if 语句没有测试为真吗?:
start = -1;
stop = 1;
interval = 0.01;
for x = start:interval:stop
if x == 0.20
disp('it worked')
end
end
但这段代码确实测试正确:
start = 0;
stop = 1;
interval = 0.01;
for x = start:interval:stop
if x == 0.20
disp('it worked')
end
end
我尝试了一堆不同的起始值,它们是否有效似乎是随机的......为什么改变起始值会改变输出?
如果我更改测试值(即 0.2 到 0.8 或其他),我也会看到类似的不一致
我错过了什么?
最佳答案
您正在使用 ==
测试 float .注意 -1+120*.01==0.2
为假,因为它们在浮点表示中不相等。 0.01*20==0.2
恰好是真的。相反,使用公差,例如if abs(x-0.20)<1e-10
.
关于matlab - 在 matlab for loop 中测试迭代值失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15514343/