C语言判断三角形类型。为什么输入10,10,14.14的时候输出的是等腰三角形,而不是等腰直角三角形?求解答。😭😭

#include <stdio.h>
#include <math.h>
#define EPS  1e-1

/**
* a : 边1
* b : 边2
* c : 边3
* return : 0/1 0为不可以组成三角形 1为可以组成三角形 
/
int Triangle(double a, double b, double c)
{
    /
************** Begin /
if(a+b>c&&a+c>b&&b+c>a)
return 1;
else
return 0;
    /
 End ***************/
}

/**
* a : 边1
* b : 边2
* c : 边3
* return : 0/1 0为不可以组成等边三角形 1为可以组成等边三角形 
/
int Equilateral(double a, double b, double c)
{
    /
************** Begin /
if(a==b&&b==c)
return 1;
else
return 0;
    /
 Begin ***************/
}

/**
* a : 边1
* b : 边2
* c : 边3
* return : 0/1 0为不可以组成等腰三角形 1为可以组成等腰三角形 
/
int Isosceles(double a, double b, double c)
{
    /
************** Begin /
if(a==b||a==c||b==c)
return 1;
else
return 0;
    /
 Begin ***************/
}

/**
* a : 边1
* b : 边2
* c : 边3
* return : 0/1 0为不可以组成直角三角形 1为可以组成直角三角形 
/
int Right(double a, double b, double c)
{
    /
************** Begin ***********/
if(aa+bb==cc)
return 1;
else
return 0;
    /
*******
*** Begin ***************/
}
int  main(void)
{
    double a,b,c;
    printf("Input the three edge length a,b,c:");
    scanf("%lf,%lf,%lf", &a, &b, &c);

    /*************** Begin 
int t=Triangle(a,b,c);
if(t==0)
printf("不能构成三角形");
else { int z=Equilateral(a,b,c);
if(z==1)
printf("等边三角形");
else
{
int x=Isosceles(a,b,c);
if(x==1)
{
    int v= Right(a,b,c);
    if(v==1)
    printf("等腰直角三角形");
    else
    printf("等腰三角形");
}
else
{
    int v= Right(a,b,c);
    if(v==1)
    printf("直角三角形");
}
}
    /
 Begin ***************/
}}

有误差的,14.14的平方是199.9396并不是严格意义上的相等

比较两个浮点数是否相等,不能直接用==,因为浮点数计算有截断误差。而应该用下面方式判断它们是否相等:

double eps = 1e-5; // 计算精度
double a, b;

// 计算a,b的值。。。

if (fabs(a-b) <= eps) {
    // a与b相等
}