为什么会有负数输出

来源:百度知道 编辑:UC知道 时间:2024/06/09 17:53:08
#include<iostream.h>
#include<math.h>
void main()
{
double k,r,s;
double tsin(double x);
cout<<"r=";
cin>>r;
cout<<"s=";
cin>>s;
if(r*r<=s*s)
k=sqrt(tsin(r)*tsin(r)+tsin(s)*tsin(s));
else
k=tsin(r*s)/2;
cout<<k<<endl;
}
double tsin(double x)
{
double p=0.000001,g=0,t=x;
int n=1;
do{
g=g+t;
n++;
t=-t*x*x/(2*n-1)/(2*n-2);
}
while(fabs(t)>=p);
return g;
}

上例中,当输入R=6,S=3时,为什么结果会是负数,运行结果为-0.375493
而当R=9,S=7时运行结果为什么不是负数而是7.1431e+009输出结果中的e又是什么意思.

while(fabs(t)>=p);
这一句中的fabs()函数的原型是:fabs(float i);所以你知道从double到float会损失多少精度吧,建议改用dabs(double i);
7.143e+009的意思是:7.143乘以10的9次方,这是科学计数法在C++里的一种表达形式。
希望可以帮助改进程序。