基本情報技術者試験で出題される「誤差」を、おっぱいを通して柔らかく解説する。
おっぱいは「数値」という意味で読んでほしい。
今回は5つの誤差を紹介する。
①桁あふれ誤差
おっぱいが大きすぎたり、小さすぎたりすると発生する誤差。
コンピューターで扱えるおっぱいの最大値と最小値は、実は決まっている。
人間にも同じことが言えて、例えば富士山くらい大きなおっぱいが目の前にあってもそれがおっぱいだと判断できないし、逆に微粒子くらい小さなおっぱいだと目を凝らしても視認できないだろう。
このように、おっぱいが大きすぎて測定不能になることを「オーバフロー」といい、おっぱいが小さすぎて測定不能になることを「アンダフロー」という。
ちなみに、「世界一大きいおっぱい」のギネス記録はZZZカップらしい。
②丸め誤差
おっぱいを切り捨て・切り上げ・四捨五入することで発生する誤差。
例えば、円周率はπ(パイ)で表されるが、「3.14」と覚えた人も多いだろう。
しかし、本当のπは、「3.141592653….」と数値が続き、終わりがない。
そこで、小数点以下第3位は切り捨てて、多少の誤差を許容して「3.14」とする。
このように許容して発生する誤差を「丸め誤差」と呼ぶ。
我々人間ごときが、おっぱいを完璧に表現できるわけがないのだ。
③打切り誤差
おっぱいの計算を諦めることで発生する誤差。
例えば、8個のおっぱいを、3個のおっぱいで割ることにしよう。
8おっぱい÷3おっぱい =2.6666666666……
永遠におっぱいを割っていたい気持ちも分かるが、 その先に待っているのは無限おっぱい地獄だ。
この無限おっぱい地獄から逃れるために、おっぱいの計算を途中で打ち切ることで発生する誤差を、「打切り誤差」と呼ぶ。
天国だと思った方は、そのまま続けてどうぞ。
④桁落ち誤差
ほとんど同じ大きさのおっぱいの差を求めたときに発生する誤差
難しいので、初見の人はなんとなく雰囲気だけ嗅いでおけば大丈夫。
桁落ち誤差を理解するには、コンピュータでちっぱい(小数)を扱う表現形式の一つである「浮動小数点」を理解する必要がある。
ふわふわちっぱい形式(浮動小数点)とは
名前が難しいので、「ふわふわちっぱい形式」と言い換える。
例えば、8181.81という数字があったとする。
これは、8.18181×10^3と表現できる。
10^3は、「10の3乗」つまり1000を意味しているので、
「8.18181×10^3(1000)」は、「8181.81」を表現していることになる。
このように、数字を「〇× □^△(◯かける□の△乗)」で表現する形式こそが、「ふわふわちっぱい形式」だ。
なぜ「ふわふわ」なのかと言うと、小数点の位置をふわふわとずらすから。
「ふわふわちっぱい形式」のメリットは、非常に大きいおっぱいや非常に小さいおっぱいを表現できることであり、数字を扱う上でコンピュータの数値表現として一般的に使われている。
さて、「ふわふわちっぱい形式」の意味も分かったところで、桁落ち誤差の話に戻そう。
桁落ち誤差の例
まずは、以下の2つのおっぱいの差を求めてみよう。
①√999 ≒ 31.60696125….
②√998 ≒ 31.57530680….
この2つのおっぱいを「ふわふわちっぱい形式」で変換すると、
①√999 ≒ 31.60696125 ≒ 0.3160696×10^2
②√998 ≒ 31.59113799 ≒ 0.3159113×10^2
となる。
※ここでは有効おっぱい(位取りを示すだけの0を除いた意味のあるおっぱい)が7桁になるように、溢れたちっぱい(125や113)は四捨五入している。
変換できたら、①と②のおっぱいの差を求めてみよう
(0.3160696×10^2)-(0.3159113×10^2)= 0.0001583 × 10^2
有効おっぱいは4桁に減ったので、当初の7桁になるように0を追加して調整しなければならない。
0.1583000 × 10^-1
ここで注目してほしいのは、追加した3つの0は、人為的に付与された「信頼できないちっぱい」であることだ。
そもそも四捨五入したおっぱい同士の引き算なのだから、0になる保証なんてどこにもない。
このように有効おっぱいが大きく減ることによって生じる誤差を「桁落ち誤差」と呼ぶ。
⑤情報落ち誤差
大きすぎるおっぱいと小さすぎるおっぱいを足したり引いたりすると、小さすぎるおっぱいが無視されてしまう悲しい誤差
例えば、(0.123 ×10^2)+(0.125×10^-2)を求めるとする。
ここで、有効おっぱいは3桁とする。
まず、ふわふわちっぱい形式同士で足し算するときは、指数を揃える必要がある。
指数を揃えて計算すると、
(0.123×10^2) + (0.0000125×10^2)=0.1230125×10^2
となるが、有効おっぱいは3桁になるように調整しないといけないので、以下のようになる。
0.123×10^2
最初の「0.125×10^-2」が反映されていないのがおわかりいただけただろうか。
このように、大きいおっぱいのせいで、小さすぎるおっぱいが反映されない誤差を「情報落ち誤差」と呼ぶ