不知何故,当我运行这个程序时,它会继续下去,即使我写的方式使它在我达到10时停止.请帮助.
double i;
for(i = 0; i != 10; i+= 0.1){
printf("%.1f\n", i);
}
Run Code Online (Sandbox Code Playgroud)
0.1不能准确表示为double.
快速解决方法是将循环条件更改为i < 10.
否则使用整数类型的循环变量,固定精度浮点数或其他任何东西.
但是请注意,如果整体迭代次数不是太高,那么使用其他小数增量,尤其是2的负幂(0.5,0.25等),它可能会起作用.