喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
     
标题: [问题] 新手,做了道简单的C编程,就是得不到正确答案  
 
willow (willow)
注册会员
Rank: 2
一般会员



UID 18370
精华 0
积分 88
帖子 86
金钱 88 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2003-2-15
状态 离线
新手,做了道简单的C编程,就是得不到正确答案

求1/1+1/2*1+1/3*2*1.......+1/20*19*...*1

我如果只算到7,答案都是正确的,可是到了8以后数值上限好象就有问题了. 我怎么也不知道到底哪出错了.

m()是用来求n*(n-1)*...*2*1的.

main中2个输出是看m()的值对不对而加上去的.

求哪位高人指点一下...

#include "stdio.h"
#define NUM 20
main()
{
    int i;
    float sum=0,tmp=0;
    for (i=1;i<=NUM;i++)
        { tmp=m(i);
          printf("%10.9f\n",tmp);
          printf("%10.9f\n",1/tmp);
          sum=sum+(1/tmp);
         /* printf("%10.9f\n",sum);  */
        }
    printf("The total is %10.9f\n",sum);
}
    m(a)
    int a;
{
    int j;
    float m=1;
    for (j=1;j<=a;j++)
    m=m*j;
    return m;
}
2008-1-23 12:15 PM#1
查看资料  发短消息  顶部
 
changxiaob
注册会员
Rank: 2


UID 92575
精华 0
积分 71
帖子 129
金钱 71 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2007-5-6
状态 离线
[推荐阅读] sql中文查询问题
先学下数学啊
1/n*(n-1)  = 1/n - 1/(n-1)
2008-1-23 05:23 PM#2
查看资料  Blog  发短消息  顶部
 
changxiaob
注册会员
Rank: 2


UID 92575
精华 0
积分 71
帖子 129
金钱 71 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2007-5-6
状态 离线
[推荐阅读] 如何让所有页面不显示状态栏?
刚才写反了
1/n(n-1) = 1/(n-1) -1/n
2008-1-23 05:31 PM#3
查看资料  Blog  发短消息  顶部
 
willow (willow)
注册会员
Rank: 2
一般会员



UID 18370
精华 0
积分 88
帖子 86
金钱 88 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2003-2-15
状态 离线
[推荐阅读] 招聘PHP程序员 工作地点上海
楼上的.我做的是阶乘的反数啊...不是那么简单的...

现在程序改得正常点了,但我要问一下,TC加法好象只算到小数点后7位,再后面就被抛弃?

要怎么才能算到小数点后20位的数?别告诉我要用数组吧?

#include "stdio.h"
#define NUM 20

    float m(a)

{
    int j;
    float m=1;

    for (j=1;j<=a;j++)
         m=m*j;
    return m;
}

main()
{
    int i;
    float sum=0,tmp;
    for (i=1;i<=NUM;i++)
        {   tmp=1/m(i);
            sum=sum+tmp;  //这里加法有问题
            printf("%22.20f\n",sum);//通过这里就可以看到后面10几个sum值都不变了.显然有问题
        }
    printf("The total is %22.20f\n",sum);
}
2008-1-23 06:44 PM#4
查看资料  发短消息  顶部
 
dovecot
新手上路
Rank: 1



UID 102704
精华 0
积分 19
帖子 19
金钱 19 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-12-4
状态 离线
[推荐阅读] 多系统登录问题
tmp越来越小,sum累加的时候,受影响的位数已经不在float的精度范围了。改成double会多几个,但是一会又没变化了。
2008-1-27 01:01 AM#5
查看资料  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.022017 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP