0

abs(sin(pi))MATLABと入力しました。'abs'(絶対値)を使用して自然な丸め誤差を軽減することを期待して、円周率の絶対値が得られることを期待していました。それでも丸め誤差が発生します。代わりに何をすべきですか、なぜ私は間違っていますか?

4

1 に答える 1

1

浮動小数点数は常にこのような問題を引き起こします。そのため、次のように書くのが一般的です。

if (x - TestValue < 0.000001)

それ以外の

if (x == TestValue)

次のようなものを使用して、値を小数点以下1桁または2桁に切り捨てることをお勧めします。

x = floor(x * 1e15) / 1e15;

xを最も近い1e15に切り捨てます。roundまたはを使用することもできますceilこの記事には、丸めの同様の戦略に関する詳細情報があります。

于 2013-01-20T22:34:17.697 に答える