发布网友
共1个回答
热心网友
计算机里使用科学计数法来存放浮点型数据,并不能精确表示某一个浮点数。
在float.h头文件下面有两个宏,用来说明double、float两种数据类型有效数字的位数,注意不是小数点后面的有效位数,而是所有位数。
#define DBL_DIG 15 /* # of decimal digits of precision */
#define FLT_DIG 6 /* # of decimal digits of precision */
float能保证的有效位数最多是6~7位,完全能保证的是6位,double是15~16位,完全能保证的是15位。
你再对照一下你测试的输出,就明白了,所以,在判断浮点数相等的时候,不能直接用==操作符,而是用一个可以接受的误差精度来表示,比如:
#define EPSILON 0.000001 //根据精度需要可以去找一些关于float,double类型、表示范围的资料来看看