int的值在for循环中不会改变

时间:2017-03-25 16:10:31

标签: java for-loop pi

我正在用Java构建一个简单的类,用于计算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 ....

无法找到这个解决方案,谢谢!

2 个答案:

答案 0 :(得分:4)

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

上述表达式在每种情况下都被评估为0,除了i == 0,因为它是一个整数除法,期望值是一个评估为0的分数

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

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

答案 1 :(得分:2)

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

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