実際の数値
と、コンピュータ内部で表現できる数値
との間に生じたずれを誤差
と呼ぶ。
無限小数を表すと永遠に終わらないので8ビットなどでは表現できない
。
それを表現するために極力それに近い値
で済ませる。
けたあふれ誤差(絶対値が大きくなった場合)
コンピュータの扱える最大値や最小値を超えることによって生じる誤差をけたあふれ誤差
という。
アンダーフロー
- 最小値を超えること
- 限りなく0に近い実数によって浮動少数の指数部がパンクして精度が場合に起きるもの。
オーバーフロー
- 最大値を超えること
- 8ビットの固定小数点で最小〜最大の範囲(-128~127)を超える場合どちらも
オーバーフロ-
という。
(正のオーバーフロー
、負のオーバーフロー
という。)
気づき
9桁の2進数の数値を8ビットの値を表現できないから2進数同士の引き算が成立するのか。
けたあふれ誤差によって引き算ができるのか。
情報落ち(加算の一方の数値が小さすぎて反映されない場合)
- 絶対値の大きな値と絶対値の小さな値の値の加減算を行った時に、絶対値の小さな値が計算結果に反映されないことによって生じる誤差のこと
気づき
- この加減算が絶対値の小さいな値な場合
計算結果が0に極力近い値になると指数がパンクするアンダーフローの結果に情報落ちになるのか? - 小さいな値が反映されないのか。
- 仮数部の桁数を超える時に発生するのか。
打ち切り誤差(計算が長くなる時)
- 計算処理を、完了まで待たずに途中で打ち切ることによって生じる誤差が
打ち切り誤差
です。 - あらかじめ何桁で計算を打ち切る
気づき
- とても小さな値が切られると情報落ちにも似ている。
- 桁が多くなることも考えればオーバーフローにも似ている。
けた落ち(信用できない桁が発生する時)
絶対値がほぼ等しい数値同士の差を求めた時に、有効な桁数が大きく減ることによって生じる誤差のこと
気づき
-
有効な桁が3桁の場合引かれた差が極力0に近くなる。そうすると0.004...になる場合がある。こうなると正規化が行われ
00
が指数部にその分追加され、桁が繰り上がるがその時仮数部に00``が表示されてしまう。しかし 繰り上げられる仮数部が
00```であるとは限らない なのでこの誤差が生じ、その結果0.004^7となるのかな。 -
信用できない桁が増える。数値同士の有効桁3桁以降の数が必ずしも0とは限らないからかな。
丸め誤差(仮数部を四捨五入、切り上げ、切り捨てにする時)
表現できる桁数を超えてしまったがために、最初受けたより小さい部分について、四捨五入や、切り上げ、切り捨てなどを行うことによって生じる誤差
気づき
四捨五入、切り捨て、切り上げによって生じる誤差か。
いろいろな誤差と似ているな。
出典