1

我有一个简单的 for 循环:

for n=0:0.001:100
  if x<100
    do something
  end
end

然而,由于代码的复杂性,x 的最终值约为 100.345,因此循环中断。

我想应用一个误差范围,if x<100 ± 0.4以便语句为真并且循环重新启动。

这怎么可能 ?

4

3 回答 3

2

使用逻辑和 ( &&) 运算符创建一个范围。只有当两个语句都为真时,才会执行条件代码。

e = 0.4;    
v = 100;
if x<v+e && x>v-e
    do something
end 

您可以根据需要n=0在条件代码中设置以重新启动循环。

于 2013-02-15T00:33:12.760 回答
1

检查两个浮点数是否在彼此的某个容差范围内的标准方法是计算绝对差,然后将其与容差进行比较。在您的情况下,它看起来像这样:

expected = 100;
tolerance = 0.4;
if abs(x - expected) < tolerance
    % do something
end
于 2013-02-15T04:16:41.110 回答
0

我很惊讶没有人提到这一点,但如果你想添加一个误差范围,你只需要在一个方向上做。

这是因为您只检查 x 是否小于比较值。因此,您可以简单地这样做:

for n=0:0.001:100
  if x<100+0.4
    % do something
  end
end

当然你也可以只使用x<100.4

于 2013-02-15T09:08:03.273 回答