再来看看我C语言程序怎么啦??高手帮忙!

来源:百度知道 编辑:UC知道 时间:2024/05/27 06:57:33
#include <stdio.h>
#include <math.h>

int main()
{
float a, b, c;
float A, B, C, D;

scanf("%f%f%f", &a, &b, &c);

A = a * a;B = b * b; C = c * c;D = A + B;
printf("%4f %4f %4f% 4f\n", A, B, C, A + B);
if (fabs(A + B - C) <= 1e-7)
printf("Yes\n");
else printf("No\n");
return 0;
}
一个看三角形是不是直角的程序
已经学会用绝对值啦,怎么输入0.5 1.2 1.3
还是输出No呢???
可输入0.3 0.4 0.5 或 0.03 0.04 0.05 都行
难道0.5 1.2 1.3的精度就要求高点吗??

我想大概是编译系统处理不同浮点数方式不同的问题, float精度也的确不够 把if (fabs(A + B - C) <= 1e-7)改成 if (fabs(A + B - C) <= 1e-5)可能行

float 精度比较低,改成 double类型的就可以了。

发现5,12,13和0.05,0.12,0.13都是可以的....

确实是精度的问题,改成double,%f改为%lf就行了。