哪位高手帮我解释一下这个问题
写出float x 与“零值”比较的if语句。 if(x>0.000001&&x<-0.000001)
int main(){ for(float x=1.0f;x>0.0f;x-=0.1f) { printf("%.64f\n",x); if(0.0f==x) printf("get 0.0f\n"); } return 0;}
[解决办法]
更正:
0.09999992698431015是不精确的0.1f
上例得到的应是-0.000000074505805969238281
把循环条件改一下
for(float x=1.0f;x>-0.1f;x-=0.1f)
[解决办法]
当你确切知道一个浮点数精确等于0.0f,它是零值,完全可以如下例使用
int main(){ int i=0; float f=0.0f; printf("i==%66.64d\n",i); printf("f==%66.64f\n",f); if(f==i) printf("f==i==0.0f==0\n"); return 0;}