第2種情報処理技術者試験 1997年度 = 平成9年度・秋期 午前 問8

 1,000個の実数値のデータをコンピュータを使用して浮動小数点演算で加算するとき、計算誤差を最も小さくするものはどれか。

 ア  すべてのデータを降順に並べ替え、先頭から順に加える。
 イ  すべてのデータを昇順に並べ替え、先頭から順に加える。
 ウ  すべてのデータを絶対値の降順に並べ替え、先頭から順に加える。
 エ  すべてのデータを絶対値の昇順に並べ替え、先頭から順に加える。

解答

 エ

解説

 有効けた数が6けたであるとしましょう。このとき、加算123456+0.0001を行っても、小さい方の値である0.0001は無視されるという情報落ち誤差が生じます。
 極端に大きい値と小さい値の加算では後者が無視されますので、あらかじめ小さい値を寄せ集めておいて加算しておき、ある程度大きくしておいてから大きい値と加算したほうが良いことが分かります。ただし、のように加算すると、加算結果がマイナスからプラスに移行する際に情報落ち誤差が生じる可能性がありますから、のように、絶対値の昇順にソートしてから加算を行います。


BohYoh.comトップページへ