Java简单计算圆周率完整示例

本文实例讲述了Java简单计算圆周率。分享给大家供大家参考,具体如下:

这两天在网上看到一个题,已知Pi可以用函数4 * (1 – 1/3 + 1/5 – 1/7 + …) 计算,计算出小数点后五位(计算圆周率)。于是手动写了一个小demo,欢迎大家留言,进行交流与指教。

完整示例代码如下:

package math;
public class PiTest {
  private static int bytelimit = 5;// 小数后限制位数
  /**
   * @author zhao33699
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    // 已知Pi可以用函数4 * (1 – 1/3 + 1/5 – 1/7 + …) 计算,小数点后五位----计算圆周率
    // 思路:按照上述公式计算出5位值,和下一次5位值比较,如果相同则为最终结果,
    // 如果不同,则保存新值,继续与在下次的值比较直至相同
    double pitemp = 0;// 根据公式所得值
    double finalpi = 0; // 上次所得值(小数点后五位)
    double pi = 0;// 本次所得值(小数点后五位)
    int i = 0;// 计数器
    double b = 0;// 公式的括号内的值
    int ii = 20;// 所得相同值次数,可限制最后是有连续ii次所得相同值
    int finalii = 20;// 与ii值相同,用于在ii值变化后 ,恢复ii值
    // int iii=20;//限制相同次数
    while (true) {
      // 次数控制
      if (i == 1000000) {
        break;
      }
      double rs = 1 + 2 * i;
      double d = 1 / rs;
      if (i % 2 == 0 && i != 1) {
        b = b + d;
        // System.out.println("---"+i+"----正------***"+b);
      } else {
        b = b - d;
        // System.out.println("---"+i+"----负------***"+b);
      }
      i = i + 1;
      // System.out.println(b);
      pitemp = (b) * 4;
      // System.out.println(pitemp);
      // 小数点后位数大于等于5位
      if (String.valueOf(pitemp).length() > bytelimit) {
        pi = subInt(pitemp);// 截取小数点后5位的值
        System.out.println(i + "次---pi--####" + pi + "---final--####"
            + finalpi);
        // 如果上次结果与本次结果相同,限制连续次数-1;
        // 如果不相同,不管前面连续多少次结果相同,将限制连续次数恢复初始值,并保存本次的新值,继续准备与下次比较
        if (finalpi == pi) {
          System.out.println("第" + (finalii + 1 - ii)
              + "次-----相同----------最终结果-------------finaoanoaof"
              + pitemp);
          ii = ii - 1;
          if (ii == 0) {
            System.out.println("$$最终所得的小数" + pitemp);
            System.out.println("$$最终所得的前五位小数" + pi);
            break;
          }
        } else {
          finalpi = pi;
          ii = finalii;
        }
      }
    }
  }
  // 格式化小数
  public static double subInt(double i) {
    String s = String.valueOf(i).substring(0, bytelimit + 2);// 获取 小数点后5位
    String ss = String.valueOf(i).substring(bytelimit + 2, bytelimit + 3);// 获取小数点第6位
    double dd = Double.parseDouble(s);// 转化为小数点后保留5位的小数
    // 如果第6位的值大于等于5,根据四舍五入,将转化后的小数加上0.00001
    if (ss.compareTo("5") >= 0) {
      dd = dd + 0.00001;
    }
    return dd;
  }
}

运行结果:

PS:这里再为大家推荐几款计算工具供大家进一步参考借鉴:

在线一元函数(方程)求解计算工具:
http://tools.jb51.net/jisuanqi/equ_jisuanqi

科学计算器在线使用_高级计算器在线计算:
http://tools.jb51.net/jisuanqi/jsqkexue

在线计算器_标准计算器:
http://tools.jb51.net/jisuanqi/jsq

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • Java简易计算器程序设计

    编写一个模拟计算器的应用程序,使用面板和网格布局, 添加一个文本框,10个数字按钮(0~9),4个加减乘除按钮, 一个等号按钮,一个清除按钮,一个求平方根按钮,一个退格按钮, 要求将计算公式和结果显示在文本框中,实现效果如下图所示. Java简易计算器代码: import javax.swing.*; import javax.swing.JTextField; import java.awt.*; import java.awt.event.*; import java.lang.*; imp

  • Java编程计算兔子生兔子的问题

    程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... 程序设计: public class exp2{ public static void main(String args[]){ int i=0; for(i=1;i<=20;i++) System.out.println(f(i)); } public static int f(int x) { if(x==1 || x==2) return 1; else return f(x-1)+f(x-2); } } 或 publ

  • java实现简单的计算器类实例

    本文实例讲述了java实现简单的计算器类.分享给大家供大家参考.具体如下: package chap; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text

  • Java计算几何图形面积的实例代码

    对于每个几何图形而言,都有一些共同的属性,如名字.面积等,而其计算面积的方法却各不相同.为了简化开发,请编写程序,定义一个超类来实现输入名字的方法,并使用抽象方法来计算面积. 思路分析: 所谓超类就是抽象父类,该抽象类中有两个方法,分别用来获取图形的名称和图形的面积.要获得图形的名称,通过类的getClass().getSimpleName()方法可以实现:要获得图形的面积,因为计算面积的方法各不相同,所以该方法是个抽象方法.定义一个子类表示圆形,圆形的半径通过构造方法获得,圆形的面积通过重写超

  • Java算法之递归算法计算阶乘

    本文为大家分享的java算法计算阶乘,在学习Java课程时经常会遇到求阶乘问题,今天接跟大家一起探讨一下 代码如下: package com.xu.main; import java.util.Scanner; public class P9 { static long fact(int n) { if(n <= 1) { return 1; } else { return n * fact(n - 1); } } public static void main(String[] args) {

  • java计算自幂数和水仙花数

    (例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数)n为1时,自幂数称为独身数.n为2时,没有自幂数.n为3时,自幂数称为水仙花数.n为4时,自幂数称为玫瑰花数.n为5时,自幂数称为五角星数.n为6时,自幂数称为六合数.n为7时,自幂数称为北斗七星数.n为8时,自幂数称为八仙数.n为9时,自幂数称为九九重阳数.n为10时,自幂数称为十全十美数. 复制代码 代码如下: /* * 自幂数 * 自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等

  • Java计算球从100米高度自由落下问题

    题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高? public class Ex10 { public static void main(String[] args) { double s=0; double t=100; for(int i=1;i<=10;i++) { s+=t; t=t/2; } System.out.println(s); System.out.println(t); } }

  • Java 蒙特卡洛算法求圆周率近似值实例详解

    起源 [1946: John von Neumann, Stan Ulam, and Nick Metropolis, all at the Los Alamos Scientific Laboratory, cook up the Metropolis algorithm, also known as the Monte Carlo method.]1946年,美国拉斯阿莫斯国家实验室的三位科学家John von Neumann,Stan Ulam 和 Nick Metropolis共同发明,

  • Java编写计算器的常见方法实例总结

    本文实例总结了Java编写计算器的常见方法.分享给大家供大家参考,具体如下: 方法一: package wanwa; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends JFrame { private Container container; private GridBagLayout layout; private GridBagConstraint

  • Java小程序计算圆周率代码

    下面我们来介绍两种Java编程中实现计算圆周率的方法. 方法一:割圆法 计算公式为: π≈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("请

随机推荐