int型の2つの変数を持つプログラムがあります。
int num;
int other_num;
/* change the values of num and other_num with conditional increments */
printf ("result = %f\n", (float) num / other_num);
float r = (float) num / other_num;
printf ("result = %f\n", r);
最初の printf に書き込まれた値は、2 番目の printf によって書き込まれた値とは異なります (小数点以下 6 桁で印刷した場合、0.000001)。
除算前の値は次のとおりです。
num = 10201
other_num = 2282
結果の数値を小数点以下 15 桁まで出力しました。これらの数値は、小数点以下 7 桁目で異なり、6 桁目の違いを説明しています。
小数点以下15桁の数字は次のとおりです。
4.470201577563540
4.470201492309570
浮動小数点の丸めの問題は認識していますが、代入と printf 引数で実行した場合、計算結果が同じになることを期待していました。
なぜこの期待は間違っているのでしょうか?
ありがとう。