c语言中浮点数的陷阱

版权声明:《本文为博主原创文章,转载请注明出处。 》 https://blog.csdn.net/zbq_tt5/article/details/86564152
#include<stdio.h>
int main()
{
    double i;
    for(i=0;i!=10;i+=0.1)
        printf("%.1lf\n",i);
    return 0;
}

程序会无限循环下去,因为浮点数数值采用二进制表示,在二进制系统之无法精确表示1/10,就像十进制无法表示1/3一样!

比如,0.1*0.1的结果不是0.01,而是0.010000000000000002。

#include<stdio.h>
int main()
{
    double i;
    for(i=0.0;i-10.0<0;i+=0.1)
        printf("%.1lf\n",i);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/zbq_tt5/article/details/86564152