浮動小数点と誤差 想定問題 3
計算機で浮動小数点数を使った計算をするときに生じる誤差に関する次の記述の,正誤の組合せとして,最も適切なものはどれか。
(ア)値がほぼ等しい2つの数の差を求めると,結果の有効数字の桁数が大きく減ってしまうことがある。これを桁落ちという。
(イ)絶対値がとても大きい数ととても小さい数を足すと,大きいほうの数の下の桁が失われ,結果が小さいほうの数に近い値になる。これを情報落ちという。
(ウ)10進数の0.5や0.25は2進数の有限の桁で表せるので,単精度の浮動小数点数でも誤差なしに表せる。
(エ)10進数の0.1は2進数にすると限りなく続く循環小数になるので,0.1をくり返し足し合わせると丸め誤差がたまり,結果がちょうど1にならないことがある。
アイウエ
解説
ポイント
桁落ち・情報落ち・丸め誤差と,2進数で表せる数・表せない数の正誤を問う問題です。
考え方と解き方
桁落ちは「近い数の引き算」,情報落ちは「大きい数+小さい数で小さいほうが消える」,丸め誤差は「桁数に収めるための誤差」です。
ア:正しい。ほぼ等しい数の差では上の桁が打ち消し合い,有効な桁が減ります。例:1.2345 − 1.2344 = 0.0001 は,5桁が1桁になります。
イ:誤り。情報落ちで失われるのは「小さいほうの数」で,結果は大きいほうの数とほぼ同じになります。説明が逆です。
ウ:正しい。0.5=(0.1)2,0.25=(0.01)2 と有限の桁で表せるので,誤差なしに表せます。
エ:正しい。0.1=(0.000110011…)2 と限りなく続くので,丸めた値が記録されます。足し合わせると誤差がたまり,ちょうど 1 にならないことがあります。答えは ア ○,イ ×,ウ ○,エ ○
覚えておくこと
- 2進数の小数:(0.1)2 = 1/2,(0.01)2 = 1/4,(0.001)2 = 1/8,(0.0001)2 = 1/16。(0.1)2 = 0.5 や (0.01)2 = 0.25 は有限の桁で表せる(テキスト・覚えること)
- 丸め誤差:決まった桁数に収めるため,はみ出た桁を切り捨てたり四捨五入したりして生じる誤差。10進数の 0.1 や 0.01 は2進数で割り切れないので,足し合わせると誤差がたまる(テキスト・覚えること)
- 桁落ち:ほぼ同じ大きさの数どうしを引くと,有効な桁が減ってしまうこと(テキスト・覚えること)
- 情報落ちで消えるのは小さいほうの数。「大きいほうの下の桁が失われる」は逆(テキスト・ひっかけ)
類似する過去問:平成24年度 基礎科目 I-2-1、平成27年度 基礎科目 I-2-1
テキスト「浮動小数点と誤差」を読む