标题:迭代法求平方根为什么不对
只看楼主
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
结帖率:100%
已结贴  问题点数:20 回复次数:5 
迭代法求平方根为什么不对
如下:
#include<stdio.h>
#include<math.h>

void main()
{
 double x0,x1,n;
 scanf("%f",&n);
 x0=n/2;
 x1=(x0+n/x0)/2;
 do
   {
   x0=x1;
   x1=(x0+n/x0)/2;
   }
 while(fabs(x1-x0)>=1e-5);
 printf("%f",x1);
 getch();
}
我用WINTC编译,输入2,输出0.000008.
把double改为float就对了。为什么double不行。
搜索更多相关主题的帖子: 平方根 迭代法 
2009-11-08 14:22
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
得分:10 
#include<stdio.h>
#include<math.h>

void main()
{
double x0,x1,n;
scanf("%lf",&n);   //  double 是8字节, 用lf, float是4字节  用 f
x0=n/2;
x1=(x0+n/x0)/2;
do
   {
   x0=x1;
   x1=(x0+n/x0)/2;
   }
while(fabs(x1-x0)>=1e-5);
printf("%lf",x1);
getch();
}
2009-11-08 14:37
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
得分:10 
定义与格式不匹配

我可好玩啦...不信你玩玩^_^
2009-11-08 14:45
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
得分:0 
呵呵 是我太粗心了
楼上正确
不过最后,书上说双精度数也可用%f输出。又有一个问题:双精度度用%f输出和%lf输出有区别吗?好像没有区别。
printf("%f",x1);
2009-11-08 14:48
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
得分:0 
双精度数也可用%f输出
    那得看你的编译器支不支持
    即使可以也要double的值在float内,否则溢出,不能正常转换

我可好玩啦...不信你玩玩^_^
2009-11-08 15:01
xufan123
Rank: 5Rank: 5
等 级:职业侠客
帖 子:226
专家分:318
注 册:2010-11-15
得分:0 
我全用float 也可以啊           它有效数字是6~7符合
2010-11-30 09:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-291478-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.479632 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved