計算機算術
単精度の浮動小数点数で、1億(10⁸)に1を足しても結果が1億のまま変わらない。この現象の説明として正しいものはどれか。
- A1億は単精度では表せないので、結果がNaNになっている
- B有効桁数が約7桁しかなく、1が丸めで消えるため
- C足し算の命令が、大きな数の計算を省略する決まりになっている
答えと解説を見る
正解:B. 有効桁数が約7桁しかなく、1が丸めで消えるため
単精度は有効数字がおよそ7桁で、1億付近では表せる数の間隔が8になっています。1億 + 1 は表せる2つの値の間に入り、最も近い1億に丸められるので、1が消えてしまいます。このように、大きさの違う数を足すと小さい方の情報が失われる現象を情報落ちといいます。小さい値を大量に足すときは、小さいものから先に足す、補正つきの足し算を使うなどの工夫をします。1億は表せる数で、NaNにはなりません。
- A. 1億は単精度で表せ、NaNにはなりません。
- B. 正しい。1億付近の間隔は8で、1は丸めで消えます。
- C. 足し算の命令が計算を省略しているわけではありません。