2

私のコードでは、ベクトルの2つの連続するメンバー間の差のペアが等しいか等しくないかを確認し、それに応じていくつかの処理を行う必要があります。これがMatlabで起こっている奇妙なことです。2つの連続した数字のペアが2つあるとしたら、

(x(i+3) - x(i+2)) ~= (x(i+1)-x(i)) 

1両側が等しい場合でも、それは私に与えます。その理由は、丸め誤差があるためだと思いますが、よくわかりません。例えば、

x = [0,0.16,0.32,0.48,0.64,0.80];
>>a = x(5) - x(4)

a =

 0.1600

>>b = x(4) - x(3)

b =

 0.1600

>>a-b

ans =

5.5511e-17

この問題を取り除く方法はありますか?この問題を回避するための別の戦略~=やオペレーターはありますか?==

よろしくお願いします。

4

1 に答える 1

5

そのように浮動小数点数が等しいかどうかを比較するべきではありません。より信頼性の高い方法はabs(a-b)<eps、同等性をテストする場合に使用することです。

于 2012-09-01T03:42:41.620 に答える