分别用do-while和for循环计算1+1/2!+1/3!+……的前20项和

tianshanaoxue 2007-10-18 04:22:26

public class Nu {
public static void main(String args[])
{
int m=1,n;
float i,sum=0;
for(n=1;n<=20;n++)
{ m=m*n;
i=1/m;
sum=sum+i;
}
if(n>=20)

System.out.print(sum);
}
}
我写成这个样子,可是输出为1.0,一直找不到错在哪里,高手们指教阿。
...全文
1926 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianshanaoxue 2007-10-18
  • 打赏
  • 举报
回复
谢谢啦
hl4967 2007-10-18
  • 打赏
  • 举报
回复
把m 定义成浮点型
public class Nu {
public static void main(String args[])
{
int n;
double i,m=1.0,sum=0.0;
for(n=1;n <=20;n++)
{ m=m*n;
i=1 / m;
//System.out.println(i);
sum=sum+i;

}
if(n >=20)

System.out.print(sum);
}
}
guorujian 2007-10-18
  • 打赏
  • 举报
回复
public class Nu
{
public static void main(String args[])
{
float sum = 0f,i=1f;
for (int n = 1; n <= 20; n++) {

sum = sum + i / factorial(n);
}
System.out.print("SUM="+sum);
}

public static int factorial(int ok)
{
int sum = 1;
for (int i = 1; i < ok + 1; i++) {
sum = sum * i;
}
return sum;
}
}
float的长度已经不能体现出10-20的值变化
  • 打赏
  • 举报
回复
i=1/m; 改为 i = 1.0F / m; 就可以了。

因为 1 和 m 是 int 类型的,只有第一次是“1”,以后 m > 1,所以 1/m 的结果是“0”。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧