基本情報 令和7年度 科目A 問2:テクノロジ系に関する問題
浮動小数点形式で表現された数値の演算結果における丸め誤差の説明はどれか。
- a演算結果がコンピュータの扱える最大値を超えることによって生じる誤差である。
- b数表現のけた数に限度があるので,最下位けたより小さい部分について四捨五入 や切上げ,切捨てを行うことによって生じる誤差である。正答
- c乗除算において,指数部が小さい方の数値の仮数部の下位部分が失われることに よって生じる誤差である。
- d絶対値がほぼ等しい数値の加減算において,上位の有効数字が失われることによ って生じる誤差である。 - 3 -
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは b です。
「丸め誤差」は、計算結果を決められた桁数に収めるために、はみ出した部分を切ったり四捨五入したりして発生する小さなズレのこと。
たとえば、お会計で「税込327.6円」と出たけど、レジは1円単位までしか扱えないので「328円」に四捨五入する…あの“ちょっとズレた感”が丸め誤差です。
👉 覚え方:丸める=四捨五入=桁を切る。「丸めて生まれるズレ」と覚えればOK。
ほかの選択肢:a は数が大きすぎて溢れる「オーバーフロー」/c は大きい数と小さい数を掛け算したとき小さい方が消える「情報落ち」/d は近い数の引き算で大事な部分が消える「桁落ち」。どれも別の誤差です。
なぜこれが正解か
正解は b。丸め誤差(rounding error)は、浮動小数点の仮数部の桁数が有限なため、最下位桁より小さい部分を四捨五入・切上げ・切捨てで処理することで生じる誤差。例:0.1 は 2 進数で循環小数になるため、有限ビットで表現すると必ず丸め誤差が出る。
各選択肢の解説
- a:最大値を超える誤差は オーバーフロー(あふれ誤差)。
- b:仮数部の最下位以下を丸めることによる誤差=丸め誤差。正解。
- c:指数部が小さい方の仮数部下位が失われる=情報落ち(けた落ちと混同注意)。大きな数と小さな数の加算で発生。
- d:絶対値がほぼ等しい数の引き算で上位の有効数字が消える=桁落ち。
覚え方・ひっかけ注意
丸め=端数処理/情報落ち=大小差/桁落ち=近い数の引き算/オーバーフロー=はみ出しの4点セットで覚える。試験では4種類の誤差を入れ替えて出題されるので、それぞれの発生原因を1語で言えるようにしておく。
理論的背景
IEEE 754 倍精度(64ビット)では仮数部52ビット、指数部11ビット、符号1ビット。仮数部の表現可能桁数は約15〜17桁(10進)に相当し、これを超える精度は最近接偶数丸め(round half to even / banker's rounding) などの規則で切り捨てる。これが丸め誤差の発生原理。0.1+0.2 ≠ 0.3 になる有名な現象もこの帰結。
実務での使われ方
金融計算では丸め誤差累積を避けるため、10進浮動小数点(IEEE 754-2008 decimal64) や 固定小数点・整数演算(円→銭、米国セント単位)を使う。Java の BigDecimal、Python の decimal モジュール、SQL の NUMERIC/DECIMAL 型がその実装例。科学技術計算では Kahan の補正加算(compensated summation)で累積誤差を抑える技法もある。
試験での位置づけ
科目Aの「データ構造とアルゴリズム」または「コンピュータシステム」分野で頻出。4種類の誤差(丸め/情報落ち/桁落ち/オーバーフロー)の定義穴埋めが定番。応用情報では打切り誤差(テイラー展開を有限項で打ち切る誤差) も加わり5種類セットで出題されることがある。
選択肢の発展補足
- 情報落ち(c):例 `1.0e20 + 1.0` を float で計算すると 1.0 が消える。対策:加算前にソートして小さい数から足す。
- 桁落ち(d):例 二次方程式の解 `(-b ± √(b²-4ac))/2a` で b が大きく ac が小さいときの (-b+√…) 側で発生。式変形(共役有理化)で回避。
- 丸め誤差の累積:行列演算の反復計算で問題化し、条件数(condition number)が大きい行列は誤差増幅率が高い。
- 基本情報技術者では誤差解析の数式まで踏み込み、Kahan summation や反復改良法(iterative refinement)が出題範囲。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 令和7年度 科目A 問2/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。