求П为4*(1-1/3+1/5-1/7+....),当求到比3.14159这前大一点的n的值,且输入此时П值

解决方案 »

  1.   

    import java.io.*;public class PiDemo { public static void main(String[] args) { int t;
    double N ;
    int i=0;
    double sum = 0.0;
    double pi;
    System.out.print("i =");
    try { BufferedReader br = new BufferedReader(new InputStreamReader(
    System.in));
    i = Integer.parseInt(br.readLine());
    } catch (Exception e) {
    }
    do {
    t = Math(-1, i - 1);
    sum += 1.0 * t / (2.0 * i - 1);
    pi = sum * 4;
    N = i;
    } while (pi > 3.14159); System.out.println(" N=" + N + "\n pi =" + pi); } private static int Math(int i, int j) {
    // TODO 自动生成方法存根
    return 0;
    }

      

  2.   

    private static int Math(int i, int j) {
    // TODO 自动生成方法存根
    return 0;
    }
    这个函数你是想轮流出现+ - 交替吧
    其实没有起作用
      

  3.   

    比3.14159这前大一点的n的值结果是分别正负逼进PI的 所有的值都有比3.14159大一点
    就算得到了精确的值 也是3.1415926... 比3.14159大一
    点 所以题目有问题
    我改了下题目    比3.141593 大一点的n的值  代码:   
    package csdn;import java.io.*;
     
    public class PiDemo { public static void main(String[] args) { int t=1;
    double N ;
    int i=0;
    double sum = 0 ;
    double pi;
    boolean unfair = true;
    double first=0;
    double second=0;
    do {
    i++;
    if(i%2==0)
    t = -1;
    else
    t = 1;
    sum += 1.0 * t / (2.0 * i - 1);
    pi = sum * 4;
    if(t==1){
    second = pi;
    if((first>3.141593)&&(second<3.141593)){
    unfair =  false;
    }
    else{
    first = second;
    }
    }
    N = i;
    } while (unfair); System.out.println(" N=" + N + "\n pi =" + first);