标题:求一个数的开平方问题
只看楼主
hh2010
该用户已被删除
 问题点数:0 回复次数:8 
求一个数的开平方问题
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: 平方 
2010-06-24 22:42
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
得分:0 
double 精度太高了,一些小的数值忽略了不能显示,你改用float就行了!
#include<stdio.h>
#include<math.h>
#define E0 0.00005
int main(void)
{
    float sq_root(float f);
    float f;
    printf("请输入一个要开平方的数:\n");
    scanf("%f",&f);
    printf("所输入数的开平方是:%.4f\n",sq_root(f));
    return 0;
}
float sq_root(float f)
{
    float x;
    x=f;
    x=(float)((x+f/x)*0.5);
    while(fabs(x*x-f)>=E0)
        x=(float)((x+f/x)*0.5);
    return x;
}

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-06-24 22:57
hh2010
该用户已被删除
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-06-24 23:56
c317158943
该用户已被删除
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-06-25 01:00
Free自然
Rank: 1
等 级:新手上路
帖 子:23
专家分:3
注 册:2008-3-23
得分:0 
谁能帮我解释一下这个算法吗  为什么这样做能求出来  感激不尽
2010-06-25 14:36
hh2010
该用户已被删除
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-06-28 23:28
谢谆本
Rank: 2
来 自:湖南娄底
等 级:论坛游民
帖 子:55
专家分:49
注 册:2010-6-21
得分:0 
问个问题啊~~为什么控制while(fabs(x*x-f)>=E0)  #define E0 0.00005 是为什么~~
2010-06-29 11:35
yunfeishizhe
Rank: 2
等 级:论坛游民
帖 子:40
专家分:54
注 册:2010-4-3
得分:0 
double的格式是lf,应该把scanf()改为,scanf("%lf",&f);我试过,好了
2010-06-29 18:05
rainbow1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:277
专家分:839
注 册:2010-5-19
得分:0 
牛顿迭代逼近,看一下数值分析。EO 为给定的精度,当达到这个精度时,迭代停止。理论上可以非常精确,但不一定有必要。
2010-06-29 18:46



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




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

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