数値計算と誤差

浮動小数点演算で起こる4種の誤差を学びます。

浮動小数点で起こる誤差の種類と回避策。実務でも金融計算等で重要なテーマです。

日野 こむぎ(普段) 日野 こむぎ

0.1 + 0.2 が 0.30000000000004 になっちゃう、あれだよね?

藤森 さやか 先生(笑顔) 藤森 さやか 先生

そう、典型例ね。
浮動小数点演算では4種類の誤差が発生しうるの。

青木 澪(普段) 青木 澪

4つを覚えて: 丸め誤差 (有限桁での切捨て)、打切り誤差 (無限級数を途中で止める)、桁落ち (近い値同士の引き算で有効桁が消える)、情報落ち (大小の値の加算で小が消える)。

桃井 すみれ(普段) 桃井 すみれ

桁落ちって、どんな場面で起こるんですかぁ?

青木 澪(普段) 青木 澪

例: 1.000001 - 1.000000 = 0.000001。
元は7桁の精度があったのに、結果は1桁しか有効じゃなくなるの。
これが桁落ち。
二次方程式の解の公式で対処することもあるわ。

藤森 さやか 先生(普段) 藤森 さやか 先生

金融計算では誤差が許されないから、整数 (cent単位) やBCD (Binary-Coded Decimal) を使うのが原則なのよ。
Python の Decimal 型なども同じ思想ね。

青木 澪(普段) 青木 澪

試験では「次の計算で発生する誤差は何か」「桁落ちが起こるのはどの場合か」といった問題が頻出よ。

日野 こむぎ(笑い) 日野 こむぎ

要は、プログラミング言語で float を金額計算に使っちゃダメってことだね!

確認クイズ

1.000001 - 1.000000 のような近い値同士の引き算で、有効桁が大幅に失われる誤差を何と呼ぶか。

  1. 丸め誤差
  2. 打切り誤差
  3. 桁落ち
  4. 情報落ち
こたえを見る

正解: 3. 桁落ち

桁落ちは、値が近い数同士の引き算で発生し、本来あった有効桁数が大幅に減ってしまう誤差です。物理計算や統計計算で問題になりやすく、計算順序の工夫で回避します。

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。