对于小数精度要求比较高的题,常常需要用技巧替换掉一些运算
比如:定义 eps = 1e-8
那么 x == 0 就要变成 abs(x) < eps
x > y 就要变成 x-y > eps
方便起见,可以定义一个 enlarge 函数
int enl(double x){
return x>eps?1:x<-eps?-1:0; }
这样的话,x==y 就写成 enl(x-y)==0;
x > y 就写成 enl(x-y) ==1
原理应该比较清楚吧。。
2024-03-18 20:02:46
对于小数精度要求比较高的题,常常需要用技巧替换掉一些运算
比如:定义 eps = 1e-8
那么 x == 0 就要变成 abs(x) < eps
x > y 就要变成 x-y > eps
方便起见,可以定义一个 enlarge 函数
int enl(double x){
return x>eps?1:x<-eps?-1:0; }
这样的话,x==y 就写成 enl(x-y)==0;
x > y 就写成 enl(x-y) ==1
原理应该比较清楚吧。。