Java 如何只计算π的第n位?

Java 如何只计算π的第n位?,java,math,Java,Math,我用BBP公式计算π的第n位。正常BBP公式计算一定数量的Pi位数的Pi。我试图得到π的一位数的值。维基百科BBP公式网站上有一个关于如何获得π的第n位数的部分。这一部分就是这一部分。因此,我用Java编写了一个程序,用我对计算第n位数字的BBP公式的解释来计算π的第n位数字,如图所示: 这是我的java程序的代码。如果我的公式或java代码中计算π的第n位有错误,请告诉我,因为我没有得到正确的答案。(例如) 你想要圆周率的哪一位小数?1. 3.0024718637216376E116 C:\

我用BBP公式计算π的第n位。正常BBP公式计算一定数量的Pi位数的Pi。我试图得到π的一位数的值。维基百科BBP公式网站上有一个关于如何获得π的第n位数的部分。这一部分就是这一部分。因此,我用Java编写了一个程序,用我对计算第n位数字的BBP公式的解释来计算π的第n位数字,如图所示:

这是我的java程序的代码。如果我的公式或java代码中计算π的第n位有错误,请告诉我,因为我没有得到正确的答案。(例如)

你想要圆周率的哪一位小数?1. 3.0024718637216376E116 C:\Users\matth\Documents>JavaNThDigitoFPI 你想要圆周率的哪一位小数?2. 9.224189345124711E114
导入java.io.Console;
公共类NTHITOFPI{
公共静态void main(字符串[]args){
System.out.print(“您想要Pi的哪个小数位数?”);
字符串行=System.console().readLine();
double n=double.parseDouble(行);
双y=0.0;

对于(double k=0;k,这不是对您的问题的直接回答,也不是对代码中问题的解决方案,而是在Java中获取Pi中第n个
数字的一种实用方法,只需子字符串
Math.Pi

public char nPi(int index) {
    if (index < 0 || index > 15) return '';

    String pi = String.valueOf(Math.PI).replace(".", "");
    char nDigit = pi.charAt(index);

    return nDigit;
}
公共字符nPi(整数索引){
如果(索引<0 | |索引>15)返回“”;
String pi=String.valueOf(Math.pi).replace(“.”,”);
char nDigit=pi.charAt(索引);
返回nDigit;
}

注意:这将圆周率限制在16位左右。但是,除非你做一些非常精确的数学运算,否则此选项可能对你有用。

你需要结合使用@tim Biegeleisen的程序和此选项。首先,你需要计算所需的圆周率位数,因此使用此线程中的信息:

公式并不“简单”,所以我不会从线程复制任何代码,您可以自己查看

一旦你使用了他们的计算方法,然后使用

pi的计算包含在代码中[picalcs]的占位符中

如果您需要的位数超过一个double可以存储的位数,则需要创建一个数据存储系统。您“可以”使用一个数组分别存储double的place值,每个值包含16位数字。但您需要将这些数字相互减去以获得更多的值

例如,如果您的第一个索引存储:3.14159 26535 89793 然后,为了得到第二个索引,取更多的pi值,并从第一个值中减去它,得到接下来的16个值:23846 26433 83279 5


这将允许您根据需要获取任意多个数字的pi值。希望这有帮助,祝您好运。

如果值是用户输入的数字和指针,请尝试此操作 3.14159265358979311599796346854418515161590576171875如果用户间1为值 6.28318530717958623199592693708837032318115234375如果用户内部2为值

public static BigDecimal nPi(int value, int pointer) {
    return new BigDecimal(Math.PI  * value).movePointLeft(pointer);
}

请给我们一个计算不正确的特定数字。如果您使用Math.pow,您将被限制为double的精度此公式生成十六进制数字。您打算如何将其转换为十进制?另请参阅。底线是
double
s没有足够的精度来存储任何有效幂次的低位数字第16页(例如)我为n输入2,得到9.2241。我正在尝试制作一个不限制小数位数的Pi生成器程序。Java显示的变量位数不超过15位,因此我需要计算Pi的每个小数位数,以便生成许多位数。我正在制作任意位数的Pi生成器程序,因为我正在尝试制作一个Pi生成器网站,您可以在其中指定Pi的小数位数。此方法仅限于Math.Pi中的位数(即不多)。
public char nPi(int index) {
    if (index < 0 || index > 15) return '';

    String pi = String.valueOf(Math.PI).replace(".", "");
    char nDigit = pi.charAt(index);

    return nDigit;
}
String pi = String.valueOf([picalcs]).replace(".", "");
char nDigit = pi.charAt(index);
public static BigDecimal nPi(int value, int pointer) {
    return new BigDecimal(Math.PI  * value).movePointLeft(pointer);
}