Java JS科学 : How to print the whole Real number?

标签 java jscience

我编写了一些测试代码,将 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 而不仅仅是前几位数字?

最佳答案

您可能需要质疑您关于级数收敛的假设。 π 的这种近似依赖于欧拉对 Basel problem 的解。根据经验,下面的示例查找了多次迭代计数与 π2/6 的偏差。正如您所看到的,迭代计数中的每个数量级增加的精度不超过一位小数。

代码:

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

关于Java JS科学 : How to print the whole Real number?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16996421/

相关文章:

java - 是否有任何可用的 API 来表示各种元素单位,如 KG、Litre、Metre、KM 等

java - 泛型类型的访问方法

java - 由于 DDMS post create init,Eclipse 挂起

java - Spring批处理JdbcCursorItemReader导致内存不足的问题

java - 什么是 NullPointerException,我该如何解决?

java - 如何确保java类在应用程序启动时加载?

java - 奇怪的 Javax.measure.quantity.Length 绑定(bind)不匹配

java - 应该使用哪个 jsr-275 单位实现?

java - 连接 RPC SOAP 服务的确切 url 是什么