PR
【第5問】
 浮動小数点数形式のデータを演算すると誤差が生じることがあります。「情報落ち」と呼ばれる誤差が生じるのはどの場合ですか。
【選択肢】正解
A  0で除算したとき  
B  表せる数値の範囲を超えたとき  
C  極端に大きな数値と小さな数値を加減算したとき
D  0.12345 - 0.12344のように,下位桁のみ異なる数値で減算したとき  

正解は選択肢Cです。

 浮動小数点数形式で表された0.123×10^100のように極端に大きな数値と,0.456×10^2のように極端に小さな数値を加減算する場合には(実際には2進数ですが,ここではわかりやすいように10進数で示しています),大きな数値の指数に合わせて計算されるので,小さい数値は0.000…000456×10^100となります。

 このとき仮数の桁数を超えてしまうと,下位桁がカットされ0.000…000456は,0だとみなされてしまいます。このため,加減算を行っても値が増減しないことになります。これを「情報落ち」と呼びます。




【第6問】
 プログラムのソースコードにおいて「マジックナンバー」と呼ばれるものはどれですか。
【選択肢】正解
A  1文字の名前が付けられた変数  
B  何を表しているかわからない即値
C  1つの変数が複数の用途に使用されたもの  
D  プログラムが正常終了したことを示す値  

正解は選択肢Bです。

 例えば,変数priceに金額が格納されていて,その消費税(5%)を計算して変数taxに代入するとしましょう。tax = price * 0.05; というソースコードを記述した場合,0.05という即値がマジックナンバーと呼ばれます。

 プログラムを書いた本人は,0.05が消費税だとわかりますが,他の人が見ると何を意味しているかわからないかもしれません。 「意味不明な数値なのにプログラムが動作するのだから,これは魔法の数値に間違いない」という皮肉を込めてマジックナンバー(magic number)と呼ぶのです。

 マジックナンバーをなくすには,0.05という即値にTAX_RATESのような名前を付け,tax = price * TAX_RATES; と記述します。