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取值求区间的没有问题,下面那个求积分的单独拿出来也没有问题
但是把他们拼起来就得到一个特别大的数,应该怎么改?

------解决方案--------------------
探讨

如果你用全局变量ret,就干脆不要传这个参数了,改成
double kexin(double a)

另外你代码里还有类似问题,就不一一指出了