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; }