丸め誤差とは

まるめごさ

実数を有限の桁数で表すときに、表せない値を近い値に丸めることで生じる誤差。0.1 は2進数の浮動小数点数では正確に表せないので、足し合わせると誤差がたまり、倍精度で0.1を10回足しても1.0にならない。実数を = で比べる処理や、実数で繰返しの回数を数える処理は避ける。

「丸め誤差」は、2分野の5問の練習問題に出てきます(計算機算術, プログラミングの基礎(擬似言語のトレース)など)。

この用語の分野: プログラミングの基礎(擬似言語のトレース)

丸め誤差の練習問題に挑戦

IEEE 754の正規化数で、仮数の先頭の1を記録しない(隠れビット)ことの効果として正しいものはどれか。

  1. A先頭の1を省くと、負の数を表せるようになる
  2. B同じビット数で精度が1ビット分増える
  3. C先頭の1を省くと、計算の結果が必ず正確になる
答えと解説を見る

正解:B. 同じビット数で精度が1ビット分増える

2進数で正規化すると、0以外の数は必ず「1.xxx × 2^指数」の形になり、先頭は常に1です。決まっている1をわざわざ記録する必要はないので省き、その分のビットを小数部に使います。そのため単精度では仮数の記録が23ビットでも、精度は24ビットになります。ただし指数部がすべて0の非正規化数では先頭を0とみなします。負の数は符号ビットで表し、丸め誤差がなくなるわけでもありません。

最近接偶数丸めで整数に丸めるとき、2.5 と 3.5 はそれぞれいくつになるか。

  1. A3 と 4
  2. B2 と 4
  3. C2 と 3
答えと解説を見る

正解:B. 2 と 4

どちらもちょうど中間の値なので、偶数の方に丸めます。2.5は2と3の中間で、偶数の2に丸めます。3.5は3と4の中間で、偶数の4に丸めます。中間を常に切り上げる四捨五入では3と4になり、合計は元の合計6より1大きい7になってしまいますが、偶数への丸めでは 2 + 4 = 6 で合計が保たれます。2と3は、中間を常に切り捨てた場合の結果です。丸め誤差のかたよりを防ぐのがこの方式の利点です。

解説の中の「丸め誤差」

「丸め誤差」が出てくる問題(5問)

  1. IEEE 754の正規化数で、仮数の先頭の1を記録しない(隠れビット)ことの効果として正しいものはどれか。
  2. 最近接偶数丸めで整数に丸めるとき、2.5 と 3.5 はそれぞれいくつになるか。
  3. ほぼ等しい2つの浮動小数点数を引き算したとき、有効な桁が大きく減ってしまう現象を何と呼ぶか。
  4. 小さなマイコンやDSPで、浮動小数点ではなく固定小数点の演算がよく使われる主な理由はどれか。
  5. 実数型の値は IEEE 754 の倍精度(binary64)で表し、加算の結果は最も近い表せる値に丸める。次のプログラムを実行した後の c の値はどれか。

プログラミングの基礎(擬似言語のトレース)の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

IEEE 754 仮数 指数部 非正規化数 最近接偶数丸め 桁落ち 情報落ち マイコン(マイクロコントローラ) 固定小数点 変数

用語集の一覧へ