| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 545 人关注过本帖
标题:求圆周率的值为什么错了
只看楼主 加入收藏
自然卷
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: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册: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
快速回复:求圆周率的值为什么错了
数据加载中...
 
   



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

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