A+B Problem III-(涉及误差)NYOJ-477

时间:2022-10-28 20:52:41

描述求A+B是否与C相等。

 
输入
T组测试数据。 每组数据中有三个实数A,B,C(-10000.0<=A,B<=10000.0,-20000.0<=C<=20000.0) 数据保证小数点后不超过4位。
输出
如果相等则输出Yes 不相等则输出No
样例输入
3
-11.1 +11.1 0
11 -11.25 -0.25
1 2 +4
样例输出
Yes
Yes
No

对于两个浮点数相等的判断,要注意误差
#include <stdio.h>
#include <math.h>
int main()
{
double a, b, c;
int n;
scanf("%d", &n);
while(n--){ scanf("%lf %lf %lf", &a, &b, &c);
// if(a+b == c)//在c语言中,浮点数是用近似值表示,当“==”比较两个浮点数是否相等时,由于存储误差,会得出错误的结果。所以用以下方式判断
if(fabs(a+b-c) <= 1e-)//1e-5的意思就是1乘以10的负5次幂。即等号左右之差不大于0.00001
{
printf("Yes\n");
}
else
{
printf("No\n");
} }
return ;
}