for 循环中 int 的值不变

Value of int doesn't change in for loop

我正在 Java 中构建一个简单的 class,用于计算 Pi 的值,并在其旁边打印 Pi 的实际值。 该程序的输入是一串自然数(大于0),用于确定计算的精度。 这是我的代码:

public class Pi {

public static void main(String[] args) {
    int N = Integer.parseInt(args[0]);
    double myPi = 0;
    for (int i=0 ; i<N ; i++) {
        myPi += (Math.pow(-1,i))*(1/((i*2)+1));
    }
    myPi *= 4;
    System.out.println(myPi + " " + Math.PI);

}

(*出于某种原因,文本中仅此处缺少右括号)

问题是变量 "myPi" 只在 for 循环的第一次迭代中改变。 例如,对于输入 4 (N=4),结果将是 4.0 而不是 3.1....

找不到这个问题的解决方案,谢谢!

(1/((i*2)+1)) 

上述表达式在除 i == 0 之外的所有情况下都被计算为 0,因为它是一个整数除法并且期望值是一个分数,其计算结果为 0

您需要使用浮点运算才能获得浮点值。

(1.0/((i*2)+1)) <-- Note the 1.0 here

如果你想要一个双精度值作为一个操作的结果,至少一个操作数必须是双精度的。 试试这个

    int N = Integer.parseInt(args[0]);
    double myPi = 0;
    for (int i=0 ; i<N ; i++) {
        myPi += (Math.pow(-1,i))*(1.0/((i*2)+1));
    }
    myPi *= 4;
    System.out.println(myPi + " " + Math.PI);