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,若小于则认为相等,其他精度也一样