メインコンテンツへ
基礎理論数値表現・計算

浮動小数点演算で丸め誤差が累積する典型的な状況として最も適切なものはどれか。

ア.非常に大きな数と非常に小さな数を繰り返し加算する正解
イ.同じ数を2回乗算する
ウ.整数どうしの加算を繰り返す
エ.2の累乗数を乗算する

解説

丸め誤差の累積は「砂粒のような小数部分が大きな海(大きな数)に飲み込まれる」現象。1億に0.000001を1万回足すと理論上0.01増えるはずが、浮動小数点では0.000001が有効桁から消えてしまい全く加算されないことがある。砂粒が海に消えるように、小さい数が大きな数の陰に隠れてしまう!

なぜ ア が正解か

浮動小数点加算で大きな数(例:1.0×10^8)と小さな数(例:1.0×10^-8)を足す場合、指数を合わせる過程で小さな数の有効桁が失われる(桁落ち・情報落ち)。これを繰り返すと誤差が累積。これは「情報落ち(cancellation)」と呼ばれる典型的な丸め誤差蓄積パターン。数値計算では加算順序の工夫(小さい数から足す)が対策になる。

なぜ イ は間違いか

同じ数の2乗は1回の乗算で完結し、誤差が「累積」する状況ではない。個別の丸め誤差は発生しうるが繰り返し累積する構造ではない。

なぜ ウ は間違いか

整数は浮動小数点でも(範囲内なら)正確に表現可能。整数どうしの加算では丸め誤差は原則発生しない。

なぜ エ は間違いか

2の累乗数(1, 2, 4, 8...)は2進数で正確に表現でき、乗算でも誤差は発生しにくい。むしろ誤差が最も少ないケース。

出典: AI生成問題(学習用)