用双数算术舍入

时间:2017-05-15 07:41:10

标签: c floating-point precision

以下代码未按预期给出准确值。什么可能是计算中的问题。

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 为什么呢?

0 个答案:

没有答案