double 转 int 的问题

程序如下:
#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

1个回答

取整得到的是不大于这个浮点数的最大整数。但是浮点数在运算和转换为10进制的时候会有微小的误差。所以有时候会出现这种情况。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!