基本情報技術者試験 令和7年度 科目A 公開問題(過去問) 問2 について解説します。
問題
問2 浮動小数点形式で表現された数値の演算結果における丸め誤差の説明はどれか。
ア 演算結果がコンピュータの扱える最大値を超えることによって生じる誤差である。
イ 数表現のけた数に限度があるので,最下位けたより小さい部分について四捨五入や切上げ,切捨てを行うことによって生じる誤差である。
ウ 乗除算において,指数部が小さい方の数値の仮数部の下位部分が失われることによって生じる誤差である。
エ 絶対値がほぼ等しい数値の加減算において,上位の有効数字が失われることによって生じる誤差である。
解説・解答
丸め誤差とは
コンピュータが扱える桁数(有効桁数)には上限があります。そのため、実際の値をそのままの桁数で表せない場合、
・四捨五入
・切り上げ
・切捨て
といった丸め処理を行って桁数を調整して近い値に置き換える必要があります。
この「本当の値」と「丸めた値」との差が丸め誤差です。
それぞれの選択肢について確認します。
ア: 演算結果がコンピュータの扱える最大値を超えることによって生じる誤差である。
これはオーバフローによって生じる誤差の説明です。
浮動小数点数には、
・指数部(値の大きさのスケールを表す部分)
・仮数部(精度を決める部分)
があります。
指数部には表せる範囲が決まっており、演算の結果がその最大値を超えると無限大(Inf)やエラー扱いになります。これがオーバフローです。
これは桁を丸めたわけではなく、表現可能範囲を超えたという別の問題です。丸め誤差とは異なります。
イ: 数表現のけた数に限度があるので,最下位けたより小さい部分について四捨五入や切上げ,切捨てを行うことによって生じる誤差である。
上記の説明の通り、これが丸め誤差の説明で正解です。
浮動小数点数では決められた有効桁数(bit数)があるため、それ以上の細かい小数を保持できません。この足りない部分は、四捨五入・切上げ・切捨てで近い値に調整されます。その調整による誤差が丸め誤差です。
ウ: 乗除算において,指数部が小さい方の数値の仮数部の下位部分が失われることによって生じる誤差である。
これは、指数部の差が大きいときに小さい方の数値の下位ビットが消えてしまう情報落ちによって生じる誤差の説明です。
浮動小数点演算では、指数部が異なる数値を揃えるために桁合わせが行われます。
例えば、「10^5 × 1.23456」と「10^-2 × 9.87654」を演算する場合、指数を揃える必要があるため指数の小さい方の値は右に大きくシフトされることになります。シフトされた結果、小さい方の数値の下位ビットが消えてしまい、これが情報落ちです。
エ: 絶対値がほぼ等しい数値の加減算において,上位の有効数字が失われることによって生じる誤差である。
これはけた落ちによって生じる誤差の説明です。
2つの値がほぼ等しい場合、引き算を行うと上位桁がほとんど打ち消し合い、結果の有効桁数が著しく減ることがあります。これがけた落ちです。
例えば、「1.23456789 − 1.23456780」を演算すると、結果は 0.00000009 となり、本来の8桁の有効数字が演算後は1桁しか残らないような状態です。
以上により、この問題の解答は「イ」になります。
