方法一:割圆法
计算公式为:
π≈3*2^n*y_n
其中,n代表割圆次数,y_n代表圆中内嵌正6*n边形的边长
package 计算π的近似值;
import java.util.Scanner;
public class Example {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入割圆次数:");
int n=scan.nextInt();
cut(n);
}
static void cut(int n){
double y=1.0;
for(int i=0;i<=n;i++){
double π=3*Math.pow(2, i)*y;
System.out.println("第"+i+"次切割,为正"+(6+6*i)+"边形,圆周率π≈"+π);
y=Math.sqrt(2-Math.sqrt(4-y*y));
}
}
}
方法二:无穷级数法
求圆周率π的级数公式为:
package 计算π的近似值;
import java.util.Scanner;
public class Example1 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入精度:");
double z=scan.nextDouble();
System.out.println("在精度为"+z+"的条件下,π约等于:\n"+jishuPI(z));
}
static double jishuPI(double z){
double sum=2;
int n=1;
int m=3;
double t=2;
while(t>z){
t=t*n/m;
sum=sum+t;
n++;
m+=2;
}
return sum;
}
}