浮動小数点数 基礎 1
実数が浮動小数点数としては正確に表現されない理由
以下の 2 つが挙げられる.
- 2進数表現による反復表現の打ち切り誤差
- 実数が有効範囲を超えることによる誤差
2進数表現による反復表現の打ち切り誤差
有限の 10 進小数点数として表記可能な実数であっても、基数2を用いた場合 有限の表現が可能とは限らない。
例えば,小数点数 0.1 の例を考えよう.
これは見ての通り、有限の 10 進小数点数として表記されるが、
2 進数では以下のような無限の反復表現になる.
0.0001100110011001100110011001100110011001100110011....
したがって、2 進数の場合、0.1 という数値は正確には
2 つの浮動小数点数の間に存在しており、
いずれの値でも厳密には表現できないことになる.
実数が有効範囲を超えることによる誤差
また、上で述べた状況意外としては
実数が有効範囲を超える場合があげられる.
基数がbの時、
浮動小数点表示では各桁は
と表示される.
ここで絶対値が以上、あるいは 以下になっているケースが考られる.
14. Floating Point Arithmetic: Issues and Limitations — Python 2.7.10 documentation