为什么运行一下代码结果是无线循环。
```c
#include <stdio.h>
int main()
{
double i ;
for(i = 0; i != 10; i += 0.1)
printf("%.1f\n", i);
return 0;
}
即使将i!=10改成i!=10.0也是无限循环。
怎样修改才能让其增加到10退出循环呢。
为什么运行一下代码结果是无线循环。
```c
#include <stdio.h>
int main()
{
double i ;
for(i = 0; i != 10; i += 0.1)
printf("%.1f\n", i);
return 0;
}
即使将i!=10改成i!=10.0也是无限循环。
怎样修改才能让其增加到10退出循环呢。
浮点型精度的运算是不准确的,你这里看小数点后一位是看不出来的,可以打印十几位看看。
所以当i加到10的时候并不是10,小数点后还是有值的。所以这里会进入死循环。
所以开发中是要避免使用浮点型数值做精准判断的。
你可以这么修改打印看一下运行结果:
double i ;
for(i = 0; i != 10; i += 0.1) {
printf("%.16lf\n", i);
if (i > 20) {
break;
}
}