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