为什么这个程序会一直输出

#include <stdio.h>
#include <string.h>
#include <math.h>
int main(void)
{
 double i;
 for(i=0;i!=10;i+=0.1)
     printf("%.1f\n",i);
 
return 0;
}
阅读 3.1k
6 个回答

因为double表示0.1时的精度问题,i永远不会等于10.0,所以做成无限循环。

根据IEEE754浮点数表示规范,i+=0.1会造成浮点数误差累加的情况,另外浮点数不能精确表达10.0,所以i永远不会等于10.0,导致死循环

试试i!=(double)10

以%f输出你就知道了

精度缺失.
如果要循环的话,尽量用int,size_t这些整形类型

作为for的循环变量必须是整数。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进