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