問2 午前 平成27年度 春期 基本情報技術者試験

問題

桁落ちの説明として、適切なものはどれか。

ア 値がほぼ等しい浮動小数点数同士の減算において、有効桁数が大幅に減ってしまうことである。

イ 演算結果が、扱える数値の最大値を超えることによって生じるエラーのことである。

ウ 浮動小数点数の演算結果について、最小の桁よりも小さい部分の四捨五入、切上げ又は切捨てを行うことによって生じる誤差のことである。

エ 浮動小数点数の加算において、一方の数値の下位の桁が結果に反映されないことである。

解説

桁落ちは「値がほぼ等しい」がキーワードです。桁落ちはコンピュータ特有の問題ではなく、一般的に起こります。

例 えばAさんがお金持ちで5兆円持っているとしましょう。そしてBさんもお金持ちで、5兆1億円持っているとします。それを紙に記載したいのですが、書ける 数字の桁数が5桁までだとします。Aさんは5兆円を50000億円と記載しました。これも5兆円です。そしてBさんは5兆円1億円をもっていますが、数字 5桁までしか書けないので、50001億円と記載しました。

この時点で有効桁数は「5桁」あります。数字を5つ書けるからです。

後日、AさんとBさんの金融資産の「差額」を計算しようとして、A引くBを計算したら1億円になりました。この1億円という数は正しいですが、有効桁数は「1桁」に減っています。

次にCさんの金融資産額が1億円だとします。これをAさんから引いてみると、49999億円になります。これは有効桁数が「5桁」のままです。

なぜ有効桁数が1桁になってしまったり5桁のままだったりするのか。それはAさんとBさんの金融資産額がほぼ等しいからです。一方でAさんとCさんとはかけ離れてるからです。

このように「ほぼ等しい」数同士で引き算をすると有効桁数が減ります。これはコンピュータ特有の問題ではなく、紙でやっても起きる問題です。

この問題はアが正解です。

イはオーバーフローです。コンピュータが扱える数の範囲は有限です。つまりある程度大きい数は扱えなくなります。コンピュータが扱える範囲外の数字になると発生するのがオーバーフローです。

ウは丸め誤差です。これはコンピュータ特有の問題ではなく、一般でも起こり得ます。例えばAさんが5兆円と1000円持っていたとしても、5桁までしか記載できない場合は「50000」億円としか書けません。1000円は無視されてしまうのです。これが丸め誤差です。

エ は情報落ちです。これはコンピュータ特有の問題で、極めて注意する必要のある問題です。これは例えば、極端に大きい数と、それよりも極端に小さい数同士を 足したときに起こります。例えばAさんとBさんが100万円と200万円を持っているなら、合計300万円と表現するのは簡単ですが、Aさんが5兆円持っ ていてBさんが100万円だと、ほぼBさんの資産額は無視されます。二人あわせて5兆円ですと表現されるでしょう。このようにコンピュータ上での足し算は 同じくらいの大きさの数を足したほうが誤差は小さくなります。これは回帰分析などを行う数値計算のときに重要になります。

解答