代码段1:
int main()
{
if(0.1+0.2==0.3){
printf("ok\n");
}else{
printf("not\n");
}
}
运行结果是not,所以,0.1+0.2≠0.3
具体原因,是因为计算机中储存的0.1比真正的0.1略微大一点;0.2比真正的0.2略微大一点;相加之后,就比0.3大了。而计算机中储存的0.3比真正的0.3略微小一点,这导致0.1+0.2≠0.3
代码段2:
int main()
{
printf("%.30f\n",0.1);
printf("%.30f\n",0.2);
printf("%.30f\n",0.1+0.2);
printf("%.30f\n",0.3);
return 0;
}
如果累加0.1,还会产生误差累积,如代码段3:
int main()
{
float x;
for(x=0.1;x<100;x+=0.1){
printf("%.3f\n",x);
}
}
在70.200之后就不是70.300了,产生了错误。