浮点型大小比较

来源:互联网 发布:php双引号转义字符 编辑:程序博客网 时间:2024/05/01 08:26

计算机对单精度浮点数的比较。

只可能是数学意义上不相等的,处理成相等,因为精度毕竟有限。

如果是数学意义上相等,却处理成相等。这是不可能的。

 

你说的,不能使用 a == b比较。

应该是这么比较

float temp = fabs(a - b);

if ( -0.000001 < temp && temp < 0.000001)追问fabsf是求绝对值吗?

我尝试设定这几个宏

#define EPSILON_E4 (float)(1E-4)

#define EPSILON_E5 (float)(1E-5)

#define EPSILON_E6 (float)(1E-6)

 

#define CompareFloatA(a,b)  ((fabs(a-b)<EPSILON_E4) ? 1 : 0)

#define CompareFloatB(a,b)  ((fabs(a-b)/a < EPSILON_E4 || fabs(a-b)/b < EPSILON_E4) ? 1 : 0)

#define CompareFloatC(a,b)  ((fabs(a-b)/a < EPSILON_E4 && fabs(a-b)/b < EPSILON_E4) ? 1 : 0)

原创粉丝点击