基本情報技術者 2010年 秋期 午前(科目A) 問02
問題文
けた落ちの説明として、適切なものはどれか。
選択肢
ア:値がほぼ等しい浮動小数点数同士の減算において、有効けた数が大幅に減ってしまうことである。(正解)
イ:演算結果が、扱える数値の最大値を超えることによって生じる誤差のことである。
ウ:数表現のけた数に限度があるとき、最小のけたより小さい部分について四捨五入、切上げ又は切捨てを行うことによって生じる誤差のことである。
エ:浮動小数点数の加算において、一方の数値の下位のけたが結果に反映されないことである。
けた落ちの説明として、適切なものはどれか。【午前2 解説】
要点まとめ
- 結論→けた落ちとは、浮動小数点でほぼ等しい値同士を減算した際に、有効桁数が急激に失われる現象です。
- 根拠→ほぼ同じ大きさの数同士の引き算は有効数字が互いに打ち消し合い、結果の有効桁数が大幅に減少することが原因です。
- 差がつくポイント→問題文の選択肢は「減算による打ち消し」を問うているため、回避策や具体例(代数変形・高精度・Kahanなど)を知っていると得点差になります。
正解の理由
正解は ア です。
アは「値がほぼ等しい浮動小数点数同士の減算において、有効けた数が大幅に減ってしまうことである」と述べており、これはいわゆる「ケタ落ち(桁落ち、loss of significance / catastrophic cancellation)」の典型的定義です。
浮動小数点では有効桁数(仮数部の桁数)が有限のため、例えば と がほぼ等しいとき の結果は相対的に小さくなり、有効桁数が残らず精度が著しく低下します。これがアの説明と一致します。
アは「値がほぼ等しい浮動小数点数同士の減算において、有効けた数が大幅に減ってしまうことである」と述べており、これはいわゆる「ケタ落ち(桁落ち、loss of significance / catastrophic cancellation)」の典型的定義です。
浮動小数点では有効桁数(仮数部の桁数)が有限のため、例えば と がほぼ等しいとき の結果は相対的に小さくなり、有効桁数が残らず精度が著しく低下します。これがアの説明と一致します。
よくある誤解
- 「けた落ちは常に加算で起きる」と考える誤解:加算でも起きうる(大きさの差で小さい方が消える)が、試験文脈では“ほぼ等しい値の減算”を指すことが多い点に注意。
- 「オーバーフローやアンダーフローと混同する」:これらは範囲(振幅)の問題であり、けた落ちは桁(精度)の問題である点を区別する必要があります。
- 「単に四捨五入だけの話」と見る誤り:丸めは関連するが、けた落ちは主に引き算による有効桁の打ち消しに由来します。
解法ステップ
- 問題文で「けた落ち」が何を指すかを明確化する(精度(桁数)の損失か、範囲の超過か)。
- 各選択肢のキーワードを確認する(減算・加算・丸め・最大値超過など)。
- 「減算で有効桁数が大幅に減る」という表現があれば、それが典型的なけた落ちの定義であるため正解と判断する。
- 他の選択肢は、オーバーフロー(最大値超過)や丸め(けた数の限界による切り捨て)など別概念なので除外する。
選択肢別の誤答解説
- ア:正解。ほぼ等しい浮動小数点数の減算で生じる有効桁の喪失(打ち消し)を述べている。
- イ:誤り。演算結果が扱える最大値を超えることによる誤りは「オーバーフロー」であり、けた落ちの説明ではない。
- ウ:誤り。数表現の桁数の限界で最小桁以下を四捨五入・切上・切捨てするのは「丸め誤差(切り捨て)」の説明で、けた落ちとは定義が異なる。
- エ:部分的に正しいが不正解。加算時に小さい方の下位桁が結果に反映されない現象は「桁落ちに似た現象」だが、典型的な「けた落ち」は“ほぼ等しい値の減算”を指すとされるため、問題の正答はアである。
補足コラム
けた落ちは数値解析で重要なトピックです。回避策としては次のような方法があります。
- 代数的変形:差を直接計算せず、式を変形して打ち消しを避ける(例:)。
- 高精度演算:多精度ライブラリ(decimal, mpfr 等)や倍精度より高精度を用いる。
- 数値アルゴリズムの工夫:Kahan の和のアルゴリズムなど、丸め誤差を抑える手法を用いる。
例:計算機での簡単な比較(Python)
import math x = 10**6 a = math.sqrt(x+1) - math.sqrt(x) # 打ち消しで精度喪失 b = 1.0 / (math.sqrt(x+1) + math.sqrt(x)) # 代数変形で改善 print(a, b) # a は精度が悪く、b は正しい近似になる
FAQ
Q1: けた落ちと丸め誤差は同じですか?
A1: 別概念です。丸め誤差は有限桁表現の一般的な結果で、けた落ちは特にほぼ同値の減算による有効桁の喪失を指します。
A1: 別概念です。丸め誤差は有限桁表現の一般的な結果で、けた落ちは特にほぼ同値の減算による有効桁の喪失を指します。
Q2: 試験で「加算で下位桁が消える」とあれば誤答ですか?
A2: 試験文脈次第ですが、多くの午前問題では「けた落ち=減算での打ち消し」を問うため、加算のみを説明する選択肢は不正解になります。
A2: 試験文脈次第ですが、多くの午前問題では「けた落ち=減算での打ち消し」を問うため、加算のみを説明する選択肢は不正解になります。
Q3: 実務での対策は?
A3: 代数変形、高精度演算、数値安定なアルゴリズム(Kahan 等)を使うことが有効です。
A3: 代数変形、高精度演算、数値安定なアルゴリズム(Kahan 等)を使うことが有効です。
関連キーワード: 浮動小数点、有効桁数、丸め誤差、オーバーフロー、桁落ち、打ち消し、Kahan法、数値安定性

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

