丸め誤差とは何か、桁落ち・情報落ちとどう違うのか
基本情報技術者試験 令和7年度 問2 / 基礎理論 › 応用数学
過去問にチャレンジ
浮動小数点形式で表現された数値の演算結果における丸め誤差の説明はどれか。
- ア
演算結果がコンピュータの扱える最大値を超えることによって生じる誤差である。
- イ
数表現のけた数に限度があるので,最下位けたより小さい部分について四捨五入や切上げ,切捨てを行うことによって生じる誤差である。
- ウ
乗除算において,指数部が小さい方の数値の仮数部の下位部分が失われることによって生じる誤差である。
- エ
絶対値がほぼ等しい数値の加減算において,上位の有効数字が失われることによって生じる誤差である。
会話形式の解説
講師今回は浮動小数点数の誤差の問題です。選択肢はどれも何かの誤差や現象の説明になっているので、それぞれが何という現象なのかを当てていくのが近道です。
受験者誤差の名前がいくつもあって、私はいつも混ざってしまいます。丸め誤差、桁落ち、情報落ち……どれも似たように聞こえます。
講師まず前提からです。浮動小数点数は仮数部、つまり数値の有効な桁を表す部分の桁数に限りがあります。そのため計算結果を全部の桁で持てないことがある、というのがどの誤差にも共通する出発点です。
受験者では「コンピュータが扱える最大値を超える」という選択肢は、桁数が足りないというより、大きすぎて表せないという話でしょうか。
講師そのとおりです。それはオーバーフローです。表現できる範囲を超えてしまう現象で、端数を処理する丸め誤差とは別のものです。
受験者「乗除算で、指数部が小さい方の数値の仮数部の下位部分が失われる」という選択肢は、丸めっぽく見えて迷いました。
講師そこは紛らわしいところです。指数が小さい方、つまり小さい数の下位が消えるのは情報落ちです。たとえば有効4桁で1.234+0.000123を計算すると、本来は1.234123ですが結果は1.234となり、足した値が反映されません。
受験者指数をそろえる桁合わせで消えるのですね。そうすると、桁合わせが必要なのは足し算や引き算のほうではないですか。
講師よく気づきました。情報落ちは主に加減算の桁合わせで起きるので、「乗除算において」という部分も正確ではありません。
受験者「絶対値がほぼ等しい数値の加減算で、上位の有効数字が失われる」というのは何でしょうか。
講師それは桁落ちです。ほぼ同じ大きさの数を引くと先頭の桁どうしが打ち消し合い、残る有効桁数が減ります。その結果、相対誤差が大きくなります。
受験者そうなると、残るのは「桁数に限度があるので、最下位桁より小さい部分を四捨五入や切上げ、切捨てする」という選択肢ですね。これが丸め誤差だと思います。
講師正解です。丸め誤差の定義そのものです。たとえば有効3桁で1/3を表すと0.333になり、それより下の部分は切り捨てられます。
受験者整理すると、最大値を超えるのがオーバーフロー、小さい数の下位が消えるのが情報落ち、上位の桁が打ち消し合うのが桁落ち、最下位桁より下を処理するのが丸め誤差、ということですね。
講師そのとおりです。補足すると、オーバーフローとは逆に、0に近すぎる値を表せなくなる現象をアンダーフローといいます。類似用語として覚えておくとよいでしょう。また、丸め誤差はより高い精度の形式を使ったり計算手順を工夫したりすれば小さくできますが、桁数が有限である以上なくすことはできません。
まとめ
丸め誤差は、浮動小数点数の桁数に限度があるため、最下位桁より下の部分を四捨五入・切上げ・切捨てすることで生じる誤差です。演算結果が表現できる最大値を超えるのはオーバーフロー、大きさの差が大きい数を加減算するときに桁合わせで小さい方の下位桁が失われるのは情報落ちです。絶対値がほぼ等しい数の減算で上位の有効数字が打ち消し合うのは桁落ちです。選択肢がどの現象を説明しているかを名前で言い当てていけば、丸め誤差を選び出せます。
解答・解説
正解はイです
この問題のテーマ
浮動小数点数の演算で生じる誤差のうち、「丸め誤差」がどれかを問う問題です。似た用語のオーバーフロー、情報落ち、桁落ちと区別できるかが問われています。
解き方の考え方
浮動小数点数は仮数部の桁数に限りがあるため、計算結果をすべての桁で保持できないことがあります。そこで、選択肢ごとに「どの現象を説明しているか」を名前で言い当てていきます。最大値を超えるのはオーバーフロー、桁合わせで小さい数の下位が消えるのは情報落ち、ほぼ等しい数の減算で上位の桁が消えるのは桁落ちです。残った「最下位桁より下を処理する」という説明が丸め誤差になります。
選択肢ごとの解説
- ×ア 演算結果がコンピュータの扱える最大値を超えることによって生じる誤差である。アの「扱える最大値を超える」という説明は、オーバーフローのことです。表現できる範囲を超えてしまう現象で、桁数が足りずに端数を処理する丸め誤差とは別のものです。
- ○イ 数表現のけた数に限度があるので,最下位けたより小さい部分について四捨五入や切上げ,切捨てを行うことによって生じる誤差である。イの説明は、桁数に限度があるため最下位桁より下を四捨五入・切上げ・切捨てすることで生じる誤差で、丸め誤差の定義そのものです。たとえば有効3桁で1/3を表すと0.333となり、それより下の部分が切り捨てられます。
- ×ウ 乗除算において,指数部が小さい方の数値の仮数部の下位部分が失われることによって生じる誤差である。ウの「指数部が小さい方の数値の仮数部の下位部分が失われる」という説明は、情報落ちのことです。情報落ちは、主に加減算で指数をそろえる(桁合わせ)ときに起きる現象なので、「乗除算において」という部分も正確ではありません。
- ×エ 絶対値がほぼ等しい数値の加減算において,上位の有効数字が失われることによって生じる誤差である。エの「絶対値がほぼ等しい数値の加減算で上位の有効数字が失われる」という説明は、桁落ちのことです。先頭の桁どうしが打ち消し合うため有効桁数が減り、相対誤差が大きくなります。
補足
オーバーフローの反対で、0に近すぎる値を表せなくなる現象はアンダーフローと呼ばれ、これも選択肢によく使われます。情報落ちの例として、有効4桁で1.234+0.000123を計算すると、本来は1.234123ですが結果は1.234となり、足した値が反映されません。丸め誤差は、より高い精度の形式を使ったり計算の手順を工夫したりすれば小さくできますが、桁数が有限である以上なくすことはできません。
POINT
- 丸め誤差は、桁数の限度により最下位桁より下を四捨五入・切上げ・切捨てすることで生じる誤差です。
- オーバーフローは、演算結果が表現できる最大値を超える現象です。
- 情報落ちは、大きさの差が大きい数を加減算するとき、桁合わせで小さい方の数の下位桁が失われる現象です。
- 桁落ちは、絶対値がほぼ等しい数の減算で上位の有効数字が打ち消し合い、有効桁数が減る現象です。
