当前位置: 代码迷 >> C语言 >> 有关数的类型变换
  详细解决方案

有关数的类型变换

热度:134   发布时间:2007-07-26 01:30:44.0
有关数的类型变换

题目为:∏/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
本人是刚刚学的,不知道不同类型的数之间在运行中的转换,请大家指点一下~~~~

搜索更多相关的解决方案: 类型  

----------------解决方案--------------------------------------------------------
/ * 等运算符是自左向右运算
假设 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类型

----------------解决方案--------------------------------------------------------
谢谢
----------------解决方案--------------------------------------------------------
谢了.....
----------------解决方案--------------------------------------------------------
  相关解决方案