問題
問2 けた落ちの説明として、適切なものはどれか。
ア 値がほぼ等しい浮動小数点数同士の減算において、有効けた数が大幅に減ってしまうことである。
イ 演算結果が、扱える数値の最大値を超えることによって生じる誤差のことである。
ウ 数表現のけた数に限度があるとき、最小のけたより小さい部分について四捨五入、切上げ又は切捨てを行うことによって生じる誤差のことである。
エ 浮動小数点数の加算において、一方の数値の下位のけたが結果に反映されないことである。
解説と解答
桁落ちとは、絶対値がほぼ同じ同符号の減算を行うと、正規化によって有効桁数が少なくなってしまう誤差のことです。したがって、正解はアです。
では有効桁数とは何でしょう。有効桁数とは、信頼できる数字の桁数という意味です。
有効桁数が異なる数字を組み合わせて計算する場合、最も小さい有効桁数に合わせて最終結果を四捨五入します。有効桁数が3桁の数値と4桁の数値で計算したら、計算結果の有効桁数は上から3桁ということです。単純な例では、
102.1 + 1.0034
は、103.1034ではなく、103.1です。上から4桁までが生きているわけです。
ところが、有効桁数が同じでも計算結果の有効桁数が減ってしまうことがあります。これが桁落ちです。2進数だと少しわかりにくくなってしまうので、10進数で説明しましょう。今、有効桁数6桁の2つの数値の減算を行います。
1.23456×105 - 1.23455×105
= 0.00001×105
このとき、計算機内部では、自動的に小数点位置が調整されます。数値の最上位の桁が、小数点のすぐ上(またはすぐ下)にくるようにして、指数部もそれに合わせて直ります。有効桁数を最大限確保するための処理です。これを正規化といいます。
= 1.00000×100
このうち0.00000部分は意味のない(信頼できない)数字です。有効桁数は6桁から1桁になってしまいました。
その他の解答群についても検証しておきましょう。イは、オーバーフローに関する記述です。ウは、丸め誤差に関する記述です。エは、情報落ちに関する記述です。
・平成20年秋期 ソフトウェア開発技術者試験 午前 問2
・平成17年秋期 ソフトウェア開発技術者試験 午前 問3
・平成16年春期 基本情報技術者試験 午前 問53
アイティ・アシスト インストラクタ
過去の同じ問題を「平成13年秋期 ソフトウェア開発技術者試験 午前 問3」としていましたが、正しくは、過去の類似の問題が「平成20年秋期 ソフトウェア開発技術者試験 午前 問2」「平成17年秋期 ソフトウェア開発技術者試験 午前 問3」「平成16年春期 基本情報技術者試験 午前 問5」です。お詫びして訂正します。本文は修正済みです。 [2010/12/24 12:30]