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

描述求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-5)//1e-5的意思就是1乘以10的负5次幂。即等号左右之差不大于0.00001
            {
                printf("Yes\n");
            }
            else
            {
                printf("No\n");
            }

    }
    return 0;
}
View Code

 

posted @ 2013-09-15 14:39  心中的阿哲  阅读(229)  评论(0编辑  收藏  举报