読者です 読者をやめる 読者になる 読者になる

浮動小数点数 基礎 1

実数が浮動小数点数としては正確に表現されない理由

以下の 2 つが挙げられる.

  • 2進数表現による反復表現の打ち切り誤差
  • 実数が有効範囲を超えることによる誤差

2進数表現による反復表現の打ち切り誤差

有限の 10 進小数点数として表記可能な実数であっても、基数2を用いた場合 有限の表現が可能とは限らない。

例えば,小数点数 0.1 の例を考えよう.
これは見ての通り、有限の 10 進小数点数として表記されるが、 2 進数では以下のような無限の反復表現になる.
0.0001100110011001100110011001100110011001100110011....
したがって、2 進数の場合、0.1 という数値は正確には 2 つの浮動小数点数の間に存在しており、 いずれの値でも厳密には表現できないことになる.

実数が有効範囲を超えることによる誤差

また、上で述べた状況意外としては 実数が有効範囲を超える場合があげられる. 基数がbの時、 浮動小数点表示では各桁は
f:id:bxyxvzz:20150928141404p:plain
と表示される. ここで絶対値がf:id:bxyxvzz:20150928142214p:plain以上、あるいは f:id:bxyxvzz:20150928142445p:plain 以下になっているケースが考られる.

14. Floating Point Arithmetic: Issues and Limitations — Python 2.7.10 documentation