技術士の過去問
平成27年度(2015年)
基礎科目「情報・論理に関するもの」 問7
このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。
問題
技術士 第一次試験 平成27年度(2015年) 基礎科目「情報・論理に関するもの」 問7 (訂正依頼・報告はこちら)
コンピュータで数値計算を実施する場合に、誤差が生じることがある。いま、0.01をコンピュータ内部で表現した値を100回足したところ答えが1にはならなかった。プログラム自体に誤りは無いとすると、1にならなかった原因の誤差として最も適切なものはどれか。なお、コンピュータ内部では数値を2進数で扱っており、0.01は2進数では循環小数で表現するものとする。
- 桁落ち
- 情報落ち
- オーバーフロー
- アンダーフロー
- 丸め誤差
正解!素晴らしいです
残念...
この過去問の解説 (3件)
01
10進数の0.01を2進数で表現すると、循環小数になり、
コンピュータでの数値処理時に、一定桁以上が切り捨てられることが問いの誤差の原因です。この誤差を丸め誤差といいます。
その他の選択肢は以下の通りです。
1.桁落ちは、近い数値の引き算を行った時に、有効数字が減少することですの
で、誤りです。
2.情報落ちは、極端に大小が異なる数値を加減した場合に、小さい数値が無視
されることですので、誤りです。
3.オーバーフローは、数値計算の結果などが扱えるデータ量を超えてしまうこ
とですので、誤りです。
4.アンダーフローは、数値計算の結果が小さすぎて0として扱われてしまい、正
しく計算出来なくなることですので、誤りです。
参考になった数96
この解説の修正を提案する
02
1.不適切です
桁落ちとは、有効数字のうち大きい方がそろっている2つの数字を引いてしまうと、有効桁が減ってしまう現象のことです。
本設問とは無関係です。
ex.) 2358.449 - 2358.446 = 0.003 (元の有効桁7桁→計算後1桁)
2.不適切です
情報落ちとは、絶対値が大きく異なる数値の計算を行うとき、小さな数値が切り捨てられるなどして計算結果に反映されにくくなることです。
本設問とは無関係です。
3.不適切です
オーバーフローとは、演算結果の値がコンピュータの表現範囲の上限を超えてしまうことにより生じる現象です。
本設問とは無関係です。
4.不適切です
アンダーフローとは、演算結果の値がコンピュータの表現範囲の下限を超えてしまうことにより生じる現象です。
本設問とは無関係です。
5.適切です
丸め誤差とは、計算結果を指定の桁数に収めるため、最下位桁からあふれた数を切り捨て・四捨五入することにより生じる誤差です。
10進数の0.01は、2進数に直すと0.0001100110011001...のような循環小数となってしまいます。
このため、計算を行う際に指定の桁数以下が切り捨てられ、誤差が発生してしまいます。
よって、5が正解です。
参考になった数61
この解説の修正を提案する
03
コンピュータ内部での数値計算の取り扱いに関する問題は技術士試験では頻出です。問題文と選択肢をよく読んで、丁寧に考えていきましょう。
1.の「桁落ち」は、近い数を引き算することで、有効数字が少なくなってしまう現象のことなので、問題文の内容とは合致しません。
2.の「情報落ち」は、絶対値が大きく異なる数の加減によって、小さい方の数の情報が無視されてしまい、演算の意味がなくなってしまう現象のことなので、問題文の内容とは合致しません。
3.の「オーバーフロー」は、演算の結果が膨大になりすぎ、レジスターの表せる範囲や、メモリ上に記録できる範囲を超えてしまう現象ですので、これも問題文の内容とは合致しません。
4.の「アンダーフロー」は、演算の結果の絶対値が小さくなりすぎ、結果を正確に表現できなくなってしまう現象ですので、これもまた問題文の内容とは合致しません。
5.の「丸め誤差」は、演算の際に、ある桁以降を無視することによって発生する誤差のことです。問題文の条件の場合、0.01は2進数で扱い、循環小数で表す、としていますので、無限桁となってしまいます。当然、どこかの桁以降を切り捨てて計算すれば、計算結果は正確に1にはなりませんので、誤差が生じることになります。したがって、問題文の条件で生じる誤差は「丸め誤差」でありますので、この5.が正解選択肢となります。
参考になった数13
この解説の修正を提案する
前の問題(問6)へ
平成27年度(2015年)問題一覧
次の問題(問8)へ