c++中求积分时溢出,该如何处理
c++中求积分时溢出
void main(){
double y;
scanf("%lf",&y);
double x1=sqrt(-2*log(y*2.5066));
double x2=-1*sqrt(-2*log(y*2.5066));
printf("%lf,%lf \n",x1,x2);
double ret,x,f;
double delta=0.0001;
for(x=x2; x<x1; x=x+delta)
{
f=(exp(-1*(x*x)/2)/2.5066);
ret=f*delta+ret;
}
printf("%lf",ret);
system("pause");
}
上面那个根据y取值求区间的没有问题,下面那个求积分的单独拿出来也没有问题
但是把他们拼起来就得到一个特别大的数,应该怎么改?
------解决方案--------------------
void main(){
double y;
scanf("%lf",&y);
double x1=sqrt(-2*log(y*2.5066));
double x2=-1*sqrt(-2*log(y*2.5066));
printf("%lf,%lf \n",x1,x2);
double ret,x,f;
double delta=0.0001;
for(x=x2; x<x1; x=x+delta)
{
f=(exp(-1*(x*x)/2)/2.5066);
ret=f*delta+ret;
}
printf("%lf",ret);
system("pause");
}
上面那个根据y取值求区间的没有问题,下面那个求积分的单独拿出来也没有问题
但是把他们拼起来就得到一个特别大的数,应该怎么改?
------解决方案--------------------