C语言浮点数判断相等

#define EPSILON    0.000001

Bool FloatEqualJudge( float x, float y )
{
    /* 判断方法:
     *  1. 两个浮点数在二进制上各个数据位完全相同
     *  2. 小于某个极小的模糊因子,根据精度要求设置
     *  3. 转为整型用位异或判断数据位
     */
    if( x == y 
     || fabs( x - y ) < EPSILON 
     || ( *( (uint32_t*)&x ) ^ *( (uint32_t*)&y ) ) == 1 )
    {
        return True;
    }
    else
    {
        return False;
    }
}

你可能感兴趣的:(单片机,C语言浮点数判断相等)