| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 851 人关注过本帖
标题:简简单单的问题!求大神指点
只看楼主 加入收藏
天空编程
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:53
专家分:123
注 册:2013-7-5
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:12 
简简单单的问题!求大神指点
这两个语句t=t*n/(2*n+1);与t*=n/(2*n+1);有何不同,为什么的出不同的结果?
#include <stdio.h >
#include < conio.h >
#include <math.h >
double fun( double eps)
{
    double s=1.0,t=1.0;
    int n=1;
    do
    {
        t=t*n/(2*n+1);
        s+=t;
        n++;
    }while(t>=eps);
    return 2*s;
}

void main ()
{
    double x;           
    printf ("Input eps : ") ;
    scanf("%lf",&x);
    printf("\neps =%lf, PI =%lf\n",x, fun(x));
}

搜索更多相关主题的帖子: include double return 
2013-09-10 11:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
简单的问题,可以通过简单的测试数据试运行自己获得解答。

授人以渔,不授人以鱼。
2013-09-10 11:57
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:2 
正常的逻辑思维一样,计算机的规则不一样,你自己测试下

Maybe
2013-09-10 12:05
天空编程
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:53
专家分:123
注 册:2013-7-5
收藏
得分:0 
回复 3楼 邓士林
输入0.0005使用t=t*n/(2*n+1);的时候,得出的结果为PI=3.141106,使用t*=n/(2*n+1);的时候,得出的结果为PI=2.0000。
所以我想弄清楚一点?
2013-09-10 12:19
天空编程
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:53
专家分:123
注 册:2013-7-5
收藏
得分:0 
回复 2楼 TonyDeng
我输入0.0005使用t=t*n/(2*n+1);的时候,得出的结果为PI=3.141106,使用t*=n/(2*n+1);的时候,得出的结果为PI=2.0000。
 所以我想弄清楚一点?
2013-09-10 12:21
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:6 
  
t=t*n/(2*n+1);和t*=n/(2*n+1);的区别在于:
(1)t=t*n/(2*n+1);的计算顺序是:t=((t*n)/(2*n+1));
【注意:(t*n)这个出来是个double的数据在除以(2*n+1)出来的结果也是double类型的数据)】;
(2) t*=n/(2*n+1); 的计算顺序是:t=t*(n/(2*n+1));
【注意:n/(2*n+1)这个出来的结果一定是个整数,取得的是整数部分,将小数部分丢了,然后再和t做乘积出来的才是double类型的数据。】

可见(1)和(2)的计算方式是有区别的,精确度也不一样,所以输出结果不一样。(注意:小括号中的计算顺序)

[ 本帖最后由 303770957 于 2013-9-10 12:53 编辑 ]

♂ 死后定当长眠,生前何须久睡。♀
2013-09-10 12:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你真正需要的运算是怎样的?

授人以渔,不授人以鱼。
2013-09-10 13:17
zheguzai
Rank: 2
等 级:论坛游民
帖 子:2
专家分:20
注 册:2010-6-7
收藏
得分:0 
还是浮点数运算四舍五入的问题
2013-09-10 13:35
不玩虚的
Rank: 9Rank: 9Rank: 9
来 自:四川
等 级:贵宾
威 望:10
帖 子:331
专家分:1301
注 册:2012-12-9
收藏
得分:0 
t*=n/(2*n+1)不是t=t*(n/(2*n+1))?不会吧

同学习......同进步....你帮我......我帮你.....上善若水.....
2013-09-10 13:48
不玩虚的
Rank: 9Rank: 9Rank: 9
来 自:四川
等 级:贵宾
威 望:10
帖 子:331
专家分:1301
注 册:2012-12-9
收藏
得分:0 
不好意思看错了,原来楼上已经真相了

同学习......同进步....你帮我......我帮你.....上善若水.....
2013-09-10 13:50
快速回复:简简单单的问题!求大神指点
数据加载中...
 
   



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

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