标题:有关数的类型变换
只看楼主
gggcen
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-29
 问题点数:0 回复次数:3 
有关数的类型变换

题目为:∏/2=2/1*2/3*4/3*4/5*6/5*6/7....前100项之积计算∏的值.
#include <stdio.h>
void main()
{

int i;float sum,sum1=1,sum2=0;
for (i=2;i<=100;i=i+2)
{
sum=1;
sum=i/(i-1)*i/(i+1);                  //这里不知道应该怎样
sum1*=sum;
}
sum2=sum1*2;
printf ("the is %f\n",sum2);
}

运行的结果是0.000000
修改为:
#include <stdio.h>
void main()
{

int i;float sum,sum1=1,sum2=0;
for (i=2;i<=100;i=i+2)
{
sum=1;
sum=(float)(i*i)/((i-1)*(i+1));
sum1*=sum;
}
sum2=sum1*2;
printf ("the is %f\n",sum2);
}
结果就为3.126079
本人是刚刚学的,不知道不同类型的数之间在运行中的转换,请大家指点一下~~~~

搜索更多相关主题的帖子: 类型 
2007-07-26 01:30
anlogo
Rank: 2
等 级:论坛游民
威 望:1
帖 子:293
专家分:20
注 册:2007-7-20
得分:0 
/ * 等运算符是自左向右运算
假设 i=10 (i 为int类型),请看以下运算:
i/(i-1)=10/9=1
1*i/(i+1)=10/11=0
这就是使用整型运算的结果~~
而float(i*i)/((i-1)*(i+1) 在i*i运算后就把(i*i)强制转换为float
所以结果是float类型
2007-07-26 06:31
gggcen
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-29
得分:0 
谢谢
2007-07-26 08:30
open1232008
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-7-26
得分:0 
谢了.....

2007-07-26 08:43



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




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

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