我正在尝试迭代计算e,但我的代码给了我2.任何想法可能出错?因为我完全陷入困境。
public class iteratee {
public static void main(String[] args) {
long limit = 0;
for (int i = 0; i < 11; i++) {
limit = limit + 1/factorial(i);
}
System.out.println(limit);
}
static int factorial(int n) {
int factorial = 1;
for (int j = 1; j <= n; j++) {
factorial = factorial * j;
}
return factorial;
}
}
答案 0 :(得分:5)
long
是表示整数值的类型;它根本不会反映任何小数。将limit
更改为类型double
并写入limit = limit + 1.0 / factorial(i)
,这将避免使用整数除法。
答案 1 :(得分:1)
更改此部分:
long limit = 0;
for (int i = 0; i < 11; i++) {
limit = limit + 1/factorial(i);
}
进入
double limit = 0;
for (int i = 0; i < 11; i++) {
limit = limit + 1.0 / factorial(i);
}
为double
和limit
而不是1.0
设置1
。