关于double类型运算和int类型运算的问题
算法笔记书里说的浮点数精度的矫正
#include<stdio.h>
#include<math.h>
const double eps = 1e-8;
int main(){
double a, b, c, d;
scanf("%d%d%d%d", &a, &b, &c, &d);
if(a*asin(sqrt(b)/2)>c*asin(sqrt(d)/2)+eps){
printf("1");
}else if(a*asin(sqrt(b)/2)<c*asin(sqrt(d)/2)-eps){
printf("2");
}else{
printf("0");
}
return 0;
}
运行结果
答案代码就是有abcd的变量类型和我不一样,他用了int
#include<stdio.h>
#include<math.h>
const double eps = 1e-8;
int main(){
int a, b, c, d;
scanf("%d%d%d%d", &a, &b, &c, &d);
if(a*asin(sqrt(b)/2)>c*asin(sqrt(d)/2)+eps){
printf("1");
}else if(a*asin(sqrt(b)/2)<c*asin(sqrt(d)/2)-eps){
printf("2");
}else{
printf("0");
}
return 0;
}
结果却是
有没有dl能解释一下为啥啊