lianzhewu 发表于 2017-9-26 00:20:58

各路大神,问下这里尾数后面的1是怎么变成4的,为啥后来又没变回1

#include <stdio.h>
main ()
{
        double k1=0.2,k2=k1;
        printf ("%.32lf\n",k1);
        printf ("%.32lf\n",k2);
        k2=k1+0.1;printf("%.32lf\n",k2);
        k2=k2-0.1;printf ("%.32lf\n",k2);
}
输出结果:
0.20000000000000001000000000000000
0.20000000000000001000000000000000
0.30000000000000004000000000000000
0.20000000000000004000000000000000

丶忘却的年少o 发表于 2017-9-26 09:25:15

应该是计算的时候精度的损失吧{:10_245:}

weizhongyang 发表于 2017-9-26 09:47:42

精度损失,最多只能精确到16位,后16位为系统的随机数据
如我本地电脑编译的输出的值:
页: [1]
查看完整版本: 各路大神,问下这里尾数后面的1是怎么变成4的,为啥后来又没变回1