calcPi

PI = Sub(4 /(2*n)+1)(n = 0,1,2,3......)

 

a:

public class Test02 {

    public static void main(String[] args) {   

       System.out.println("# TermsCalculated Pi");

       double Pi = 0.0, flag = 1.0;

       for(int i = 0; i < 12; i++){

           Pi += flag*4.0/(2.0*i+1);

           flag = -flag;//改变下次所加分数的符号

           System.out.printf("%d %.10f\n",(i+1),Pi);

       }

    }

}

执行结果为:

 

 

 

 

 

 

 

 

b:

public class Test02 {

    public static void main(String[] args) {   

       System.out.println("# Terms Calculated Pi Error(%)");

       double Pi = 0.0, flag = 1.0;

       for(int i = 0; i < 1000000; i++){

           Pi += flag*4.0/(2.0*i+1);

           if((i+1)%50000 == 0){

              System.out.printf("%d %.10f %.6f",(i+1)/50000,Pi,Math.abs((Math.PI-Pi)/Math.PI*100.0));

              System.out.println("%");

           }

           flag = -flag;//改变下次所加分数的符号 

       }

    }

}

执行结果为:

 

  

 

 

 

c

public static double calcPi(int num, double[] str){

       double Pi = 0.0, flag = 1.0;

       for(int i = 0; i < num; i++){

           Pi += flag*4.0/(2.0*i+1);

           if((i+1)%50000 == 0){

              str[(i+1)/50000-1] = Pi;

           }

           flag = -flag;//改变下次所加分数的符号 

       }

       return num;

    }

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

public class Test02 {

    public static double calcPi(int num, double[] str){

       double Pi = 0.0, flag = 1.0;

       for(int i = 0; i < num; i++){

           Pi += flag*4.0/(2.0*i+1);

           if((i+1)%50000 == 0){

               str[(i+1)/50000-1]= Pi;

           }

           flag = -flag;//改变下次所加分数的符号 

       }

       return num;

    }

    public static void main(String[] args) {

       System.out.println("# Terms Calculated Pi Error(%)");

       double [] PP =new double[20];//用一个数组来存储需要打印的Pi的值

       calcPi(1000000, PP);//调用calcPi方法

       for(int i = 0; i < PP.length; i++){   

           System.out.printf("%d %.10f%.6f",(i+1),PP[i],Math.abs((Math.PI-PP[i])/Math.PI*100.0));

           System.out.println("%");

          

       }  

    }

}

计算结果为:

e

public class Test02 {

    public static int calcTargetPercent(double accuracy){//0.10% = 0.001

       double Pi = 0.0, flag = 1.0, i = 0;

       while(true){

           Pi += flag*4.0/(2*i+1);

           flag = -flag;//改变下次所加分数的符号

           if(Math.abs((Math.PI-Pi)/Math.PI*100.0) - accuracy < 0)

              break;

           i++;

       }

       return (int)i;

    }

    public static void main(String[] args){ 

       int answer = calcTargetPercent(0.001);

       System.out.print("精度为0.10%时,需要的数量为");

       System.out.println(answer); 

    }

}

执行结果为:

 

 

 

 

 

 

 

 

 

 

 

f

public class Test02 {

    public static void main(String[] args) {   

       double Pi = 0.0, flag = 1.0, i = 0.0, result;

       while(true){

           Pi += flag*4.0/(2.0*i+1);

           flag = -flag;//改变下次所加分数的符号

           i++;

           if((int)(Pi*100000) == 314159){

              result = i;//记录最终结果

              break;

           }  

       }  

       System.out.println((int)result);

      

    }

}

执行结果为:

 

 

老师啊,老师,很久没敲代码了,这次写作业漏洞百出,犯了特别简单的错误,好悲伤,幸好最后全部改过来了,如上所示。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值