我必须使用leibniz系列计算pi到六位小数精度,我设法做到这一点,除了分配有一些限制。
pi / 4 = 1 -1/3 + 1/5 - 1/7 ......
” 不能在计算中使用数学库π - 直接或间接。仅使用正在运行的计算的增量(差异)来确定何时停止循环 “
我不明白这意味着你的运行计算的差异。我被告知的另一种方式是“当你的计算值停止变化时,你的循环可以停止”
package com.company;
public class Main {
public static void main(String[] args) {
double series = 0;
double denominator = 1;
double numerator = 1;
double pi;
double testingPi;
double formattedTestingPi = 0;
double formattedMathPi = Math.round(Math.PI * 1000000.0) / 1000000.0;
int max = 1200000;
int iterations = 0;
for(int i = 1; i < max;i++)
{
if((i % 2) != 0)
{
series = series + (numerator/denominator);
}
else if((i % 2) == 0)
{
series = series + ((numerator/denominator) * -1);
}
denominator = denominator + 2;
testingPi = series * 4;
formattedTestingPi = (Math.round(testingPi * 1000000.0))/1000000.0;
if( formattedTestingPi == formattedMathPi)
{
iterations = i;
i = max;
System.out.println("We stop");
}
}
pi = series * 4;
System.out.println("Number of Iterations :" + iterations);
System.out.println("Unformatted Series :" + series);
System.out.println("Unformatted Math Library PI:" + Math.PI);
System.out.println("Unformatted Computed PI:" + pi);
System.out.println("Formatted Computed PI:" + formattedTestingPi);
System.out.println("Formatted Math Library PI:" + formattedMathPi);
}
}
我不想解决这个问题,我只是想知道 什么是计算的三角形意味着什么,它与我现在正在做的有什么不同?
输出
迭代次数:1181461
未格式化系列:0.7853983749998679
未格式化数学库PI:3.141592653589793
未格式化的计算PI:3.1415934999994715
格式化计算PI:3.141593
格式化数学库PI:3.141593