马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 soldier 于 2011-5-10 13:49 编辑 #include <stdio.h>
#include <math.h>
void main()
{
#if(1)
double Sqrtl( double dn);
double n;
scanf("%lf",&n);
printf("平方根为:%.4lf\n",Sqrtl(n));
printf("实际平方根:%lf\n",sqrt(n));
#endif
}
//开平方根
double Sqrtl( double dn)
{
double n=0,sn=0;
n=dn/2;
while((sn=n*n)>dn)//获取粗略接近真实平方根的值n
{
n/=2;
}
while((dn-sn)>0)//获取最接近真实平方根的值n
{
if((dn-sn)>n*2) //减少循环次数
n++;
else
n=n+1e-4;//控制精度
sn=n*n;
}
return n;
}
输入一个数:
49
输出结果:
平方根为:7.0001
有时,结果是正确的(7.0000),但大多数时间都是(7.0001)。并且,测试其它结果时是正确的。比如:9,16,10000
不知道这是为什么呢?还有,我想知道系统的Sqrt()是怎么做的,不知道有什么办法没有? |