|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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()是怎么做的,不知道有什么办法没有? |
|