浮点数的比较

来源:互联网 发布:辐射4 ui优化 编辑:程序博客网 时间:2024/04/30 19:01
C语言中浮点数是有精度的!!
也就造成了浮点数的比较会产生误差,因为精度有限,精度外的数是不确定的。
#include<stdio.h>void cmp_float(float a, float b);void cmp_float_e(float a, float b);int main() {float a;float b;a = 1.123456789;b = 1.123456879;cmp_float(a,b);cmp_float_e(a,b);a = 1.1234567;b = 1.1234568;cmp_float(a,b);cmp_float_e(a,b);return 0;}void cmp_float(float a, float b) {printf("%f\n", a);printf("%f\n", b);printf("cmp_float()  ");if (a > b)printf("a > b\n");else if (a < b)printf("a < b\n");else printf("a = b\n");}void cmp_float_e(float a, float b) {double e = 0.000001;printf("cmp_float_e()  ");if (a - b > e)printf("a > b\n");else if (a - b < e)printf("a < b\n");else printf("a = b\n");}

第一次 a = 1.123456789

             b = 1.123456879

这里不用精度e的话,居然相等,所以说,浮点数的比较还是很需要用精度来控制的。

虽然这里只是简单的举例,但是已经足够说明问题了。


第二次 a = 1.1234567

             b = 1.1234568


原创粉丝点击