【发布时间】:2013-05-13 04:32:54
【问题描述】:
我有一个包含两个 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 参数中执行时计算结果相同。
为什么这个预期不正确?
谢谢。
【问题讨论】:
-
它们在我刚刚进行的快速测试中匹配。
num和other_num的值是多少?您使用的是什么环境(主机架构、编译器版本等)? -
我编辑了问题并提供了数字。谢谢。
标签: c floating-point