質問: %f\n", l); return 0; } ``` ### 疑問点 累計の「double」を「float」にすると、 累計(l)の方が 50.500000 → 50.500004 になるのですが、 これが何故だか分かりません。 実数を二進数に直すときに誤差がでるのは、分かるのですが 「double」や「float」で何がどう違うのかがよく分かりません。 ### 補足情報 書籍 : 新明解C言語 入門編 返信遅れるかもしれません
回答: `float`と`double`では、値の精度が違ってきます。多くの環境(IEEE 754を採用した環境)では、 * `float`...仮数部は2進法で24ビット→10進法で7桁ちょっと * `double`...仮数部は2進法で53ビット→10進法で16桁弱 というようになっています。`float`で計算したほうは、「50.500004」なので、8桁目で値がずれていることがわかります。