以下代码未按预期给出准确值。什么可能是计算中的问题。
double a=1.0,b=3.0,c,x;
c=a/b;
printf("c= a/b = %.15lf div=%.15lf\n",c,a/b);
x=c+c+c;
printf("x= c+c+c = %.15lf Add(c+c+c)=%.15lf\n",x,c+c+c);
x=a/b+a/b+a/b;
printf("x= a/b+a/b+a/b = %.15lf Add(a/b+a/b+a/b)=%.15lf\n",x,a/b+a/b+a/b);
显示的结果是
c= a/b = 0.333333333333333 div=0.333333333333333
x= c+c+c = 1.000000000000000 Add(c+c+c)=1.000000000000000
x= a/b+a/b+a/b = 1.000000000000000 Add(a/b+a/b+a/b)=1.000000000000000
超过' x'的预期值这是 0.999999999999999 为什么呢?