簡體   English   中英

Java JScience:如何打印整個實數?

[英]Java JScience: How to print the whole Real number?

我寫了一些測試代碼,計算Pi到我想要計算的任何東西。 它看起來像這樣:

public static void piCalculatorMethod1() {
    int iteration = 1000000;

    Real pi = Real.valueOf(0);

    for (int i = 1; i < iteration + 1; i++) {
        Real current = pi;
        Real addendum = Real.valueOf((1/Math.pow(i, 2)));

        pi = current.plus(addendum);
    }

    pi = pi.times(6);

    pi = pi.sqrt();

    System.out.println(pi.toString());
}

很不幸的是,輸出決定它看起來像這樣:

3.14159169866

我很確定最終值比這更准確,因為我已經看到了它們實際添加的值,並且比這更准確。

如何讓System.out.println向我顯示整個Real,而不僅僅是前幾位?

您可能需要質疑關於系列收斂的假設。 π的這種近似依賴於歐拉對巴塞爾問題的解決方案。 根據經驗,下面的例子中發現從π 六分之二偏差為一些迭代計數的。 如您所見,迭代計數中的每個數量級都會增加不超過一個十進制數字的精度。

碼:

Real PI_SQUARED_OVER_6 = Real.valueOf(Math.pow(Math.PI, 2) / 6);
for (int p = 0; p < 7; p++) {
    int iterations = (int) Math.pow(10, p);
    Real pi = Real.valueOf(0);
    for (int i = 1; i < iterations + 1; i++) {
        pi = pi.plus(Real.valueOf(1 / Math.pow(i, 2)));
    }
    System.out.println("10^" + p + ": " + PI_SQUARED_OVER_6.minus(pi));
}

安慰:

10^0: 6.44934066848226E-1
10^1: 9.5166335681686E-2
10^2: 9.950166663334E-3
10^3: 9.99500166667E-4
10^4: 9.9995000167E-5
10^5: 9.999950000E-6
10^6: 9.99999500E-7

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM