我的pi计算器有什么问题?

安朵琳

我正在使用Wallis的方法来计算pi,我认为我做对了。至少我以为我还是做了。我认为问题(输出为0)与舍入和余数有关,尽管我不确定。这是代码:

import java.util.Scanner;

public class WallisPi {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int a = 2;
        int b = 3;
        int c = 1;
        int pi = 0;
        double acc = 0.0;

        int n = scan.nextInt();
        scan.close();

        for (int i = 0; i <= n; i++) {
            pi = (2 / 3) * c;
            if (a > b) {
                b += 2;
            } else {
                a += 2;
            }
            c = a / b;
        }

        pi *= 4;

        System.out.println("The approximation of pi is " + pi + ".");
        acc = Math.PI - pi;
        System.out.println("It is " + acc + " off.");
    }
}

自发布以来,我对代码进行了一些更改,尽管它仍未完全起作用。我得到2.666 ...,因此这里还有其他工作。

import java.util.Scanner;

public class WallisPi {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        double a = 2.0;
        double b = 3.0;
        double c = 1.0;
        double pi = 0;
        double acc = 0.0;

        int n = scan.nextInt();
        scan.close();

        for (int i = 0; i <= n; i++) {
            pi = (2.0 / 3.0) * c;
            if (a > b) {
                b += 2;
            } else {
                a += 2;
            }
            c = a / b;
        }

        pi *= 4;

        System.out.println("The approximation of pi is " + pi + ".");
        acc = Math.PI - pi;
        System.out.println("It is " + acc + " off.");
    }
}
异想天开
int a=2;
int b=3;
double pi=2;
for(int i=0;i<=n;i++){
   pi *= (double)a/(double)b;
  if(a>b){
    b+=2;
  } else {
    a+=2;
  }
}
pi*=2;

使用n = 4000得出3.141200


这是固定的整个程序:

import java.util.Scanner;

public class WallisPi {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        scan.close();

        double pi = 2;
        int a = 2;
        int b = 3;

        for (int i = 0; i <= n; i++){
            pi *= (double) a / (double) b;
            if (a > b) {
                b += 2;
            } else {
                a += 2;
            }
        }

        pi *= 2;

        double acc = Math.PI - pi;

        System.out.println("The approximation of pi is " + pi + ".");
        System.out.println("It is " + acc + " off.");
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我的GPA计算器有什么问题?(JavaScript)

来自分类Dev

我的C ++计算器似乎有什么问题?

来自分类Dev

我的基本计算器代码有什么问题?

来自分类Dev

我给数字成绩计算器的信有什么问题?

来自分类Dev

这个二项式定理计算器有什么问题?

来自分类Dev

这两个运算符计算器有什么问题?

来自分类Dev

我的标准偏差计算有什么问题?

来自分类Dev

我在链表中计算名称的函数有什么问题?

来自分类Dev

我的计算器出现问题

来自分类Dev

我的Atom编辑器片段有什么问题?

来自分类Dev

我在Java迭代器中的代码有什么问题

来自分类Dev

我的信号处理器有什么问题?

来自分类Dev

我的特殊字符计数器有什么问题?

来自分类Dev

我的模型和控制器有什么问题?

来自分类Dev

我的ButtonGroup有什么问题?编译器错误

来自分类Dev

我的信号处理器有什么问题?

来自分类Dev

AngularJS:注入我的控制器有什么问题?

来自分类Dev

这种CMAC计算有什么问题?

来自分类Dev

具有用户输入的Pi计算器

来自分类Dev

我的记录器计算表达式出了什么问题?

来自分类Dev

我的记录器计算表达式出了什么问题?

来自分类Dev

我简单的MSIL有什么问题?

来自分类Dev

我的requirejs设置有什么问题?

来自分类Dev

我的JavaScript范围有什么问题?

来自分类Dev

我的背包有什么问题吗

来自分类Dev

我的execvp使用有什么问题?

来自分类Dev

我的迭代函数有什么问题

来自分类Dev

我的DateFormatting有什么问题?

来自分类Dev

我的插入方法有什么问题?