浮動小数点

浮動小数点

執筆済 数学数値計算
x=±m×2e

符号・仮数 m・指数 e で実数を近似する表現。IEEE 754 が標準。

精度#

ビット 仮数 有効桁(10進) 機械イプシロン
float32 32 23+1 約 7 桁 1.19×107
float64 64 52+1 約 16 桁 2.22×1016

機械イプシロン ε1+ε1 となる最小の ε。 相対誤差の下限を与える。

実数と違うところ#

  • 等間隔でない。 0 の近くは密、大きい数では疎
  • 結合律が成り立たない。 (a+b)+ca+(b+c)
  • 0.1 を正確に表せない。 2 進で循環小数になる
python
0.1 + 0.2 == 0.3   # False
0.1 + 0.2          # 0.30000000000000004

浮動小数点の等値比較は避ける。 許容誤差を設けて比較する。

特殊な値#

±、NaN、±0、非正規化数。 NaN はどの値とも(自分自身とも)等しくないので、 x != x が NaN の判定になる。

参考文献#

ノート一覧を閉じる