gpt4 book ai didi

matlab - 在 matlab for loop 中测试迭代值失败?

转载 作者:太空宇宙 更新时间:2023-11-03 20:25:58 25 4
gpt4 key购买 nike

我正在尝试在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com