我遇到了一些奇怪的浮点数舍入行为。下面的代码演示了这个问题。解决这个问题的最佳方法是什么?我一直在寻找解决方案,但运气不佳。
#include<stdio.h>
int main(void)
{
float t;
t = 5592411;
printf("%f\n", 1.5*t);
t *= 1.5;
printf("%f\n", t);
return 0;
}
上面的代码应该打印出相同的值,但我在使用 GCC 4.7.2 的设置中得到了这个:
8388616.500000
8388616.000000
如果我使用计算器,我会得到第一个值,所以我假设第二个值以某种方式四舍五入。我有相同的 Fortran 代码,它不四舍五入(有 0.5)。