在java中逼近e

时间:2014-11-18 23:03:23

标签: java for-loop

我试图得到常数e的近似值,其中e = 2 + 1/2! + 1/3! + 1/4! + ....... 每次我总是运行代码!如果你能纠正我的代码,我将不胜感激。)

import java.util.Scanner;

public class E
{
  public static void main (String[] args)
  {
    Scanner scan = new Scanner (System.in);

    System.out.println("How many iterations");

    //n = iterations
    int n = scan.nextInt();

    long factor =1;  //starts at 1
    long e = 1;   //e starting point


    for (int i=1; i<=n; i++) 
    {
      factor = factor * i;
      e +=  1/factor;
    }

    System.out.println(e);

  }
}

1 个答案:

答案 0 :(得分:2)

您正在执行整数除法,在Java中,它会截断任何小数结果,以便结果始终为整数。这是一行:

e +=  1/factor;

这导致您多次添加0,这不是您需要的。

使用double文字1.0强制进行浮点计算。

e +=  1.0/factor;

此外,数学 e 不是整数(它是非理性和超验的),因此long是一种不合适的数据类型。将e声明为double

在这些变化之后,这是我得到的输出:

How many iterations
20
2.7182818284590455