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

2つの浮動小数点数が互いにある程度の許容範囲内にあるかどうかを確認する標準的な方法は、絶対差を計算し、それを許容範囲と比較することです。あなたの場合、それは次のようになります:

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 に答える