程序如下:
#include
int main()
{
double f_temp = 1.001 * 10000;
int i_temp = f_temp;
printf("%f, %d\n", f_temp, i_temp);
return 0;
}
为何编译运行输出:
10010.000000, 10009
编译器为:
g++ (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010
程序如下:
#include
int main()
{
double f_temp = 1.001 * 10000;
int i_temp = f_temp;
printf("%f, %d\n", f_temp, i_temp);
return 0;
}
为何编译运行输出:
10010.000000, 10009
编译器为:
g++ (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010
取整得到的是不大于这个浮点数的最大整数。但是浮点数在运算和转换为10进制的时候会有微小的误差。所以有时候会出现这种情况。