在此代码中:

public class PiCalc {
    public static void main(String[] args) {
        double pi = 1.0;
        int n = 3;
        int denominator = 3;
        while (n<10) {
            if (n%2 == 0) {
                pi += 1/denominator;
            }
            else {
                pi -= 1/denominator;
            }
            n++;
            denominator += 2;
        }
        System.out.println(4*pi + "," + n + "," + denominator);
    }
}


输出为:
4.0,10,17

因此,变量n和分母正在按我的意愿进行更新,但pi不是。谁能告诉我为什么?

最佳答案

阅读“ int除法”,因为这就是您正在做的事情:

1 / (some int bigger than 1) returns 0


一个整数除以一个整数的语句必须返回一个整数,因此它总是四舍五入。

更改为

1.0 / denominator


要么

(double) 1 / denominator


这样您就可以进行双重划分。

09-11 04:05