令和元年度(再試験) III-10

科目: 専門科目 / 分野: 情報工学部門 / 年度: 令和元年度(再試験)

III-10 問題画像

出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」

0.01をコンピュータ内部で表現した値を100回足しても1にならなかった原因の誤差を選ぶ問題。0.01は2進数では循環小数となり、有限桁で表現するときに生じる丸め誤差が原因である。

解説

この問題で問われていること

10進数の小数を2進数で表現するときに生じる誤差の種類を区別する問題。

解き方

① 誤差の名前: 丸め誤差=有限の桁に収めるために丸めて生じる、情報落ち=大きな数に小さな数を足して小さい方が消える、桁落ち=近い数の引き算、打切り誤差=無限の計算を途中でやめる
② 0.01は2進数で循環小数になり、丸めて保存される → その誤差が100回分たまる
③ ①

正解が正しい理由

0.01は、2進数では循環小数になり、有限のビット数で表現するときには、どこかで打ち切って(最も近い値に丸めて)保存するため、わずかに誤差をもった値になる。この誤差(丸め誤差)が、100回の加算で累積し、結果が、ちょうど1にならない。したがって①が最も適切である。

各選択肢について

覚えるべきポイント

0.1や0.01は2進数で有限小数にならず、丸め誤差を含む。そのため、浮動小数点数の等値比較や、累積加算には注意が必要。

キーワード: 丸め誤差、浮動小数点、2進数、循環小数、数値計算、誤差、情報工学部門