初学者求助!!!关于溢出的问题。

来源:百度知道 编辑:UC知道 时间:2024/05/01 21:10:35
sqrt函数使用时总是溢出怎么办?

具体代码为

#include<iostream.h>
#include<stdio.h>
#include<math.h>
void main()
{
float d,c=0,e,A[100];
double t,j,s;
int l,i,b;
cout<<"数据量为:"<<endl;
cin>>b;
for(i=0;i<b;i++)
{
l=i+1;
cout<<"输入第"<<l<<"个数据"<<endl;
cin>>A[i];
}
for(i=0;i<b;i++) c=c+A[i];
e=c/b;
for(i=0;i<b;i++)
{
d=d+(A[i]-e)*(A[i]-e);
}
s=sqrt(d/(b-1));
if(b<=2||b>=12)
{
cout<<"无法计算出正确值"<<endl;
t=0;
}
switch(b)
{
case 2:t=1.84;break;
case 3:t=1.32;break;
case 4:t=1.20;break;
case 5:t=1.14;break;
case 6:t=1.11;break;
case 7:t=1.09;break;
case 8:t=1.08;break;
case 9:t=1.07;break;
case 10:t

用float位数限制一下,例%f0.6:小数点后保留6位这样,但愿有所帮助

如果是负值引起的溢出,加个绝对值上去:

s=sqrt(abs(d/(b-1)));

***********
补充:
***********
那就在【sqrt(d/(b-1))】外面加个函数,截断一下,再赋给s。

---
以上,希望对你有所帮助。

STUDY....