【发布时间】:2013-03-09 00:05:57
【问题描述】:
我正在尝试在 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 或其他值),我也会看到类似的不一致
我错过了什么?
【问题讨论】:
-
哇,这很有趣。从初步检查中,如果你形成
x = -1:0.01:1.然后你做x(121) - 0.2你基本上得到一个非常小的接近机器精度的数字。如果您将c定义为c = x(121)-0.2,则输入x(121) == 0.2+c答案是正确的,并且如前所述,c接近机器精度。
标签: matlab if-statement for-loop