浮動小数点演算の精度とそれを回避するためのさまざまな方法 (共役、テイラー級数などを使用) について学習しているときに、よく似た 2 つの数値または大きな数値と小さな数値の減算がエラーの最大の原因として言及されています。足し算ではなく引き算だけが原因なのですか?私が見ているように、シフト中に重要なビットを失うことはありません。
質問する
2419 次
2 に答える
1
加算と減算の違いはなく、減算は否定されたオペランドとの加算です。あなたは正しいです。加算または減算するには、演算を実行してそのオペランドの有効ビットが少なくなるように、指数が小さい方の数値をビット バケットにシフトする必要があります。指数が仮数のサイズよりも大きく異なる場合、加算または減算により、結果として指数が大きい数値が得られ、小さい数値のすべてのビットがビット バケット N + 0 = N - 0 にシフトされます。
于 2010-09-20T05:50:07.523 に答える
1
ほぼ等しい 2 つの数値を減算すると、元の数値よりも差の有効ビット数が少なくなります。10 進数の例は次のとおりです。
1.23456789 9 significant digits
-1.23456785 9 significant digits
───────────
0.00000004 1 significant digit
于 2010-09-19T01:53:31.733 に答える