我有一个带有两个 int 类型变量的程序。
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 中写入的值与第二个 printf 中写入的值不同(相差 0.000001,当以 6 个小数位打印时)。
在除法之前,值是:
num = 10201
other_num = 2282
我已将结果数字打印到小数点后 15 位。这些数字在小数点后第 7 位不同,这解释了第 6 位的差异。
以下是小数点后 15 位的数字:
4.470201577563540
4.470201492309570
我知道浮点舍入问题,但我希望在赋值和 printf 参数中执行时计算结果相同。
为什么这个期望不正确?
谢谢。