小编pro*_*310的帖子

更改循环变量类型时,Java For循环更改数值结果

我写了一个用Leibniz公式计算PI数的程序:

[莱布尼茨公式]

我写了一个for循环,初始化类型为"int",循环工作正常,但是当我将初始化类型更改为"long"时,结果会发生变化.这仅在循环时间超过十亿时才会发生.这使得"int-loop"计算PI比"长循环"更准确.我不知道为什么会这样.请帮我理解这个问题.谢谢!这是我的代码.

public static void main(String[] args) {
    double result1 = 0;
    double result2 = 0;
    double sign = 1;

    for (int i = 0; i <= 1607702095; i++) {
        result1 += sign/(2 * i + 1);
        sign *= -1;
    }
    sign = 1;

    for (long j = 0; j <= 1607702095; j++) {
        result2 += sign/(2 * j + 1);
        sign *= -1;
    }

    System.out.println("result1  " + result1 * 4);
    System.out.println("result2  " + result2 * 4);
    System.out.println("pi       " …
Run Code Online (Sandbox Code Playgroud)

java numeric

37
推荐指数
5
解决办法
2087
查看次数

标签 统计

java ×1

numeric ×1