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

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);

}

}

问题在代码这一句

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是浮点型,和整型计算,结果就是浮点型。

 

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答