我希望你能为我提供关于浮点数运算的解释。以下是我编写的一些学习用的代码:
#include "stdio.h"
int main (int argc, char const *argv[])
{
int i;
double a=1.0/10.0;
double sum=0;
for(i = 0; i < 10; ++i)
sum+=a;
printf("%.17G\n", 10*a );
printf("%d\n", (10*a == 1.0) );
printf("%.17G\n", sum );
printf("%d\n", (sum == 1.0) );
return 0;
}
它输出的结果是:
1
1
0.99999999999999989
0
为什么 (sum == 1.0) 是假的很容易理解,但是为什么乘法可以给出正确答案而没有错误呢?
谢谢。