for循环不应该在 打印9.9 之后遇到 i==10 停止吗?求告知


#include<stdio.h>

int main()

{

    double i;

    for(i=0;i!=10;i+=0.1)

        printf("%.1lf\n",i);

    return 0;

 } 

for循环不应该在 打印9.9 之后遇到 i==10 停止吗?
怎么会这样?

小数计算是有误差的,计算机是二进制计算,小数转化成二进制有无限循环的情况,有误差
你可以多看几位小数就知道了

#include<stdio.h>

int main()

{

    double i;

    for(i=0;i<=10;i+=0.1) 
    printf("%.30lf\n",i);
    return 0;

 }