1

晚上。我有一个关于 Java 中 base-16 计算的问题。我正在寻找一种合理的算法来计算 pi 到 N 位数,并对允许的位数有一些限制(思考像 15-20 之类的东西)。最终这将只是以后计算器的一个功能。

我不是在寻找荒谬的精度水平,也不需要算法方面的帮助。我知道它有一个神奇的 API 方法,但我宁愿自己做。

公式:Bailey-Borwein-Plouffe公式。据我了解,它以十六进制计算 pi。

那么,我的问题是什么?我不太擅长Java。我上过的课程(直到并包括数据结构)实际上只使用了我所知道的语言作为达到目的的手段,而没有关注任何特定于语言的内容。 我想将 pi 计算为十六进制的第 n 位,然后将该值转换为字符串以进行显示。

关于从哪里开始的任何建议?我在 Java 中编码的经验大约是 20 周,而我所坚持的似乎是 Java 特定的东西。

如果我在任何地方错了,一定要指出来。我是来学习的。

4

2 回答 2

1

我将BigDecimal首先使用您当前的算法。当这令您满意时,您可以考虑替换 BigDecimal 提供的功能(假设您想编写自己的)

于 2012-05-17T07:13:24.663 回答
1

我不确定什么可以帮助你,但这是我的建议。由于您向我展示了一个公式,因此您可以使用 RECURSION 而不是使用 while 循环进行迭代。代码示例:

public static int series(int a, int b, int loopCount) {
    int sumTemp = a + b;
    b = sumTemp;

    loopCount--;
    if (loopCount > 0) {
        return series(a, b, loopCount);
    }
    else
    {
        return sumTemp;
    }
}

public static void main(String[] args) {
     int sum = series(5, 10, 3);
     System.out.println("Sum = " + sum);
}

笔记:

  • 请注意,这个简单公式的初始值是 5 和 10。函数系列在循环中对这两个值求和。
  • 在我的系列函数中,新的总和存储在参数 b 中。这种技术是强加给我的,因为 Java 通过值而不是引用传递。
  • 参数 loopCount 跟踪循环#。
  • 最后,变量 sum 是返回值。

最后,使用 Math.pow 函数进行 16 次幂计算。数学课对你的学习非常有用。

祝你好运,

汤米奎

于 2012-05-17T07:33:43.950 回答