判断实数相等,哪里有问题

问题遇到的现象和发生背景 由于实数有误差,因此判断两个实数“相等”时要考虑误差因素:当两个实数之差的绝对值小于指定的精度时,就认为它们“相等”,否x 和 y 是两个实数,若它们“相等”,则函数值为 1 (真),否则为 0 (假)则就认为它们“不等”

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

#define epsilon 1e-8

int RealEq(double x, double y);

int main()
{
double a, b;
scanf("%lg%lg", &a, &b);
if (RealEq(a, b))
{
puts("Yes");
}
else
{
puts("No");
}
return 0;
}

/* 你提交的代码将被嵌在这里 */
入口:int RealEq(double x, double y)

问题相关代码,请勿粘贴截图 int RealEq(double x, double y)

{
double a=x-y;
if(a>0&&a<=epsilon) return 1;
else if(a=0) return 1;
else if(a<0&&-a<=epsilon) return 1;
else return 0;
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

if语句判断相等是两个等号:

i```

RealEq(double x, double y)
{
double a=x-y;
if(a>0&&a<=epsilon) return 1;
else if(a==0) return 1; //此处少一个等号
else if(a<0&&-a<=epsilon) return 1;
else return 0;
}

```

麻烦点个采纳~

else if(a=0)