大神来看下这个java程序为什么输出结果是1.0

importjava.util.Scanner;publicclassDay2_1{publicstaticvoidmain(String[]args){//TODOAu... import java.util.Scanner;

public class Day2_1 {

public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner scan = new Scanner(System.in);
System.out.println("请输入一个正整数:");
int n = scan.nextInt();//输入一个正整数n

double sum = 0;//sum是表达式之和
for(int i=1;i<=n;i++){
int m = 1;//用m表示每一项的分母
for(int j=1;j<=i;j++){
m*=j;//分母
}
sum+=1/m;
}
System.out.println("1+1/2!+...+1/n!等于"+sum);

}

}
展开
 我来答
貌似風輕
推荐于2016-10-24 · TA获得超过7280个赞
知道大有可为答主
回答量:1672
采纳率:94%
帮助的人:703万
展开全部

问题在代码这一句

sum += 1 / m;

你这里相当于在模拟1+1/2!+...+1/n!

但是在这行代码中 1和m 都是整型,所以结果也是整型(去掉小数只保留整数部分)。于是会出现1/2=0,1/6=0。所以结果就是:1+1/2!+...+1/n! = 1+ 0 +0 +0 ……=1,不论n等于多少。

修改方式是把那行代码改为:

sum += 1.0 / m;

这样1.0是浮点型,和整型计算,结果就是浮点型。

 

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式