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