这个涉及到浮点数在计算机中的存储问题。可以测试如下程序:
# include <stdio.h> int main(void) { float i = 4.3123999; if (i - 4.3123999==0) printf("i为零。\n"); else printf("i不为零。\n"); return 0; }
输出结果为:i不为零。
这是因为浮点数在计算机中的存储精度问题,浮点数不能准确存储一个小数,具体可见《C语言学习笔记》。
测试程序2:
# include <stdio.h> int main(void) { double i = 0.00000001; printf("i = %lf\n", i); return 0; } /* 2012年12月11日23:56:51 结果为i = 0 验证了浮点数不能准确存储一个小数。 */
那么,如何判断一个浮点数是否为0呢?
程序如下:
# include <stdio.h> int main(void) { float i = 0; /*if (0 == 0) printf("是零!\n"); else printf("不是零!\n"); //此方法错误!*/ if (i-0.000001 <= 0.000001) printf("是零!\n"); else printf("不是零!\n"); return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/lfhappypain/article/details/47170897