最后一个WA
查看原帖
最后一个WA
112872
cnbb12楼主2020/8/15 22:38

abs精度丢失问题

最开始计算两点间距离时,使用了abs函数来求两点之差的绝对值,结果最后一个WA了。

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <math.h> 

double f(double a1,double b1,double a2,double b2){
	double d1,d2,d;
	d1 = abs(a2-a1);
	d2 = abs(b2-b1);
	d = sqrt(d1*d1+d2*d2);
	return d;
}
int main(){
	double x1,y1,x2,y2,x3,y3;

	scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3);
	printf("%.2lf",f(x1,y1,x2,y2)+f(x1,y1,x3,y3)+f(x2,y2,x3,y3));
	
	return 0;
} 

用数据调试发现abs(double)计算出来的结果有偏差。比如abs(23.234+99.99)结果为123.00,找了度娘,没搞清楚,后来发现本题可以不用abs,删掉后就AC后,只是不太理解,拜托各位大佬解惑!

2020/8/15 22:38
加载中...