double类型的数据printf输出,当值很大时的输出问题

  double a=11111*11111;
doube b=111111111*111111111;
double c=11个1*11个1;

三者输出如下:
图片说明
为什么会这样?
同时,对于int型也有下面的结果:
图片说明
不是非常理解。希望能够得到解答,谢谢!!

因为你直接写整数。那么它的乘法其实是整数乘法,最后转换为double
而整数乘法溢出了。

doube b=(double)111111111*(double)111111111;
这么写看看

输出遇到问题,具体是什么问题呢?
可以考虑一下使用 加阶码标志“e”或“E”输出。直接输出数字可能是会遇到无法输出的问题。

double a=11111.0*11111.0;