C语言,比较小数。求解

c语言中怎么比较两个float类型的数据是否相等,或者float 和double,是减去一个极小的数吗?

浮点数的表示是不精确的,所以不能直接用 == 比较两个浮点数是否完全相等。
常用的方法是定义一个极小的数,如果两个浮点数之差的绝对值小于这个极小数,
则认为这两个浮点数相等。

一个完整的范例如下:

#include <stdio.h>   
#include <math.h>   

#define EPSILON 0.000001 //根据精度需要  

int main() {
    float a = 10.55f;
    float b = 10.55f;

    if (fabs(a - b) <= EPSILON) {
        printf("a 等于 b\n");
    }
    else {
        printf("a 不等于 b\n");
    }

    return 0;
}

如果对您有帮助,请采纳答案好吗,谢谢!

一般做不到精确相等,采取的办法是确定精确度,就是把两数相减,如果要求的精度是小数点后6位,就判断得到的差值是否小于0.000001,若小于则认为相等,其他精度也一样