6月23日(水)1コマ目

今日、やったこと

誤差

今日のホワイトボード

オーバーフロー

C言語のchar型は1バイト、int型は4バイトのようにサイズが決まっている。

このサイズを超えるデータを代入すると、はみ出してしまいオーバーフローが発生する

図 オーバーフロー


アンダーフロー

C言語のfloat型やdouble型は浮動小数点形式でデータを扱っている。

割り算をすると、仮数部がどんどん小さくなっていき、最終的に0になる。

が、ゼロになる直前までは正しい値。さらに割り算をすると仮数部がゼロになる。これがアンダーフロー。

float型やdouble型のような浮動小数点形式でデータを扱うさい、扱うことができる最小値よりも小さい値になったときにアンダーフローが発生する。さきほどのゼロはアンダーフローが発生した結果であって、正しい値ではない。

図 アンダーフロー

丸め誤差

C言語のfloat型やdouble型は浮動小数点形式でデータを扱っている。

float型の場合、仮数部は23ビット。よって、仮数部の小数点以下が23ケタを超える場合、23ケタに収めるために24ケタ目以下を切り捨てる必要がある。このとき、
  • 24ケタ目を切り上げる
  • 24ケタ目を切り下げる
の2つの選択肢がある。この処理が丸め処理
丸め処理を行うことで発生する誤差が丸め誤差
ちなみに、四捨五入も丸め処理の1つであり、四捨五入することで真値との誤差が発生する。この誤差も丸め誤差。
図 丸め誤差


ケタ落ち

有効桁数が少なくなることで、真値から誤差が発生する。この誤差がケタ落ち誤差。
ケタ落ちは近い値同士の引き算の際に発生する

情報落ち

計算をする際、2つの値の指数を合わせる。大きな値と小さな値の計算の場合、仮数の一部が切り取られてしまう。この誤差が情報落ち誤差。
大きさが極端に異なる値同士の計算をする際に発生する

予告

そのうちテストします。
基本情報にこの辺の問題がちょこちょこ出題されています。
確認しておいてください。

コメント

このブログの人気の投稿

5月19日(水)1コマ目

4月22日(木)1コマ目