标题:求圆周率的值为什么错了
只看楼主
自然卷
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-3-12
结帖率:0
已结贴  问题点数:20 回复次数:3 
求圆周率的值为什么错了
#include<stdio.h>
double fun(double eps)
{
    double s=1.0,sum=1.0;
    int n=1;
    while(s>=eps)
    {
        s*=n/(2*n+1);
        sum+=s;
        n++;
    }
    return 2*sum;
}
 main()
{
    double x;
    printf("请输入eps:");
    scanf("%lf",&x);
    printf("\neps=%lf,PI=%lf\n",x,fun(x));
}
fun功能是求π的值,输入精度eps=0.0005后结果应该得出π的值。可为什么我运行后得出PI=2.000000?到底哪出错了,求解
搜索更多相关主题的帖子: eps fun 圆周率 double return 
2013-03-28 15:20
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:10 
涉及double和int型计算时 一定要强制转换
要不然 你就别用int型  全用double型

DO IT YOURSELF !
2013-03-28 15:22
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:10 
#include<stdio.h>
double fun(double eps)
{
    double s=1.0,sum=1.0;
    int n=1;
    while(s>=eps)
    {
        s*=(double)n/(2*n+1);    //加个(double)强制转换类型
        sum+=s;
        n++;
    }
    return 2*sum;
}
main()
{
    double x;
    printf("请输入eps:");
    scanf("%lf",&x);
    printf("\neps=%lf,PI=%lf\n",x,fun(x));
}

三十年河东,三十年河西,莫欺少年穷!
2013-03-28 16:10
自然卷
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-3-12
得分:0 
回复 3楼 韶志
谢了 运行正确
2013-03-31 21:03



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




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

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