精华内容
下载资源
问答
  • 3.1416878787878786
  • 计算圆周率java程序

    2011-02-15 12:15:18
    计算圆周率java程序 包含大数运算
  • java计算圆周率

    千次阅读 2018-10-23 11:17:51
    java计算圆周率,自定义小数点后面的位数 package com.dtxxsoft.diq.eam.run.util; import java.math.BigDecimal; /** * java计算圆周率 */ public class PITest { private static int n = 1000000;//小数点...

    java计算圆周率,自定义小数点后面的位数

    package com.andy.math.util;
    
    import java.math.BigDecimal;
    
    /**
     * java计算圆周率
     */
    public class PITest {
     
        private static int n = 1000000;//小数点后100位
        
        public static void main(String[] args) {
            Long start = System.currentTimeMillis();
            BigDecimal part1 = arctan(57).multiply(new BigDecimal(176));
            BigDecimal part2 = arctan(239).multiply(new BigDecimal(28));
            BigDecimal part3 = arctan(682).multiply(new BigDecimal(-48));
            BigDecimal part4 = arctan(12943).multiply(new BigDecimal(96));
     
            BigDecimal part = part1.add(part2).add(part3).add(part4);
            Long end = System.currentTimeMillis();
            System.out.println("计算"+n+"位耗时:"+(end-start)+"毫秒");
            //System.out.println(part.toString());
            System.out.println("计算"+n+"位耗时:"+(end-start)+"毫秒");
        }
        
        public static BigDecimal arctan(int x){
            int n2 = n+2;//为了防误差
            
            BigDecimal result = BigDecimal.ZERO;
            BigDecimal xsquare = new BigDecimal(x*x);
            BigDecimal bigx = new BigDecimal(x);
            BigDecimal temp;
            BigDecimal res = BigDecimal.ONE.divide(bigx , n2, BigDecimal.ROUND_HALF_EVEN);
            
            boolean b = true;
            for(int i=1;;i+=2){
                temp = res.divide(new BigDecimal(i), n2, BigDecimal.ROUND_HALF_EVEN);
                if(temp.compareTo(BigDecimal.ZERO)==0){//根据莱布尼兹级数结果=0时返回
                    break;
                }
                if(b){
                    result = result.add(temp);//加
                }else{
                    result = result.subtract(temp);//减
                }
                b = !b;
                res = res.divide(xsquare, n2, BigDecimal.ROUND_HALF_EVEN);
            }
            return result;
        }
    }
    
    
    展开全文
  • java并行计算圆周率

    2020-12-23 14:15:29
    实现4线程状态下3分钟计算圆周率小数点后62~63万位
  • 主要介绍了Java简单计算圆周率,结合完整实例形式分析了Java计算圆周率的原理与操作技巧,代码备有较为详尽的注释便于理解,需要的朋友可以参考下
  • 主要介绍了Java小程序计算圆周率代码,有两种实现方法,喜欢的朋友可以参考下。
  • Java计算圆周率

    千次阅读 2015-10-24 22:45:48
    最近很多同学来问我怎么用Java计算圆周率,其实并不是很难,用到的知识实际上是c语言的知识。  首先定义浮点数类型的pi,浮点数类型的dx,给dx以初始值1e-3(0.01),给dx这么小的初始值是为了方便计算,然后使用一个...

       最近很多同学来问我怎么用Java近似计算π的值,其实并不是很难,用到的知识实际上是c语言的知识。
       首先定义浮点数类型的pi,浮点数类型的dx,给dx以初始值1e-3(0.01),给dx这么小的初始值是为了方便计算,然后使用一个for循环,x从-100开始,当x=100时结束循环,pi的值每次利用Math.exp(-x*x)计算 e的-x二次方乘dx的值,就这样pi的每次累加取极限,这样就是根号pi的值了。
       我们不难发现x的值取100的时候,dx的值0.01相比于100的乘方是非常小的,所以就把-100~+100的过程看作是负无穷到正无穷的过程,我们应用的是公式:

    +ex2dx=π ∫ − ∞ + ∞ e − x 2 d x = π

    下面我们来看代码:
    
    public class Demo{
    
      public static void main(String[] args){
        double pi=0;
        double dx=1e-3;
        for(double x=-100;x<=+100;x+=dx){
          pi+=Math.exp(-x*x)*dx;
        }
        System.out.println(pi*pi);
      }
    }
    展开全文
  • java计算计算圆周率

    千次阅读 2014-02-25 15:20:38
    这两天在网上看到一个题,已知Pi可以用函数4 * (1 – 1/3 + 1/5 – 1/7 + …) 计算,计算出小数点后五位(计算圆周率)。于是手动写了一个小demo ,欢迎大家留言,进行交流与指教。     public class PiTest {...

     

    这两天在网上看到一个题,已知Pi可以用函数4 * (1 – 1/3 + 1/5 – 1/7 + …) 计算,计算出小数点后五位(计算圆周率)。于是手动写了一个小demo

    ,欢迎大家留言,进行交流与指教。

     

     

    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;
    	}
    }


     

    展开全文
  • 计算圆周率PI java实现

    千次阅读 2018-10-29 17:09:39
    一位数学家提供了我们计算圆周率的方法, 源码 private static void nOutput_PI(int a) { // TODO Auto-generated method stub double pi = 0; for (int i = 1; i &lt;= a; i++) { pi += Math.pow(-1...

    原理分析

    一位数学家提供了我们计算圆周率的方法,
    在这里插入图片描述

    源码

    	private static void nOutput_PI(int a) {
    		// TODO Auto-generated method stub
    		double pi = 0;
    		for (int i = 1; i <= a; i++) {
    			pi += Math.pow(-1, i + 1) / (2 * i - 1);
    		}
    		System.out.println(pi * 4);
    	}
    

    这里代码就不分析了,唯一说的一点就是,for循环的i 不一定一定要从0开始,我们应该随机应变。

    展开全文
  • 使用Java如何计算圆周率发布时间:2021-04-07 17:59:41来源:亿速云阅读:85作者:Leah使用Java如何计算圆周率?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人...
  • import org.apache.commons.lang.math.RandomUtils;public class CalcPai{public static boolean inCircle(double x, double y){return (y <= Math.sqrt(1 - x * x));}public static double...
  • 圆周率Java

    2019-03-09 21:16:16
    数学发展历史上,圆周率计算曾有许多有趣甚至是传奇的故事。其中许多方法都涉及无穷级数。 图1.png中所示,就是一种用连分数的形式表示的圆周率求法。 下面的程序实现了该求解方法。实际上数列的收敛对x的初始值 ...
  • java.text.DecimalFormat format = new java.text.DecimalFormat( " 0000 " ); for ( int i = 0 ; i < MaxRound - 1 ; i ++ ) { System.out.print(format.format(PiArray[i])); } } } 转载于:...
  • 计算圆周率

    2016-11-01 00:33:45
    计算圆周率 根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。 输入格式:输入在一行中给出小于1的阈值。输出格式:在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。输入样例:0.01 输出...
  • java 程序计算圆周率

    2010-12-22 15:46:29
    计算圆周率PI=4-4/3+4/5-4/7.......打印出第一个大于 3.1415小于 3.1416的值 class Pi { public static void main(String[] args){ double pi =0; //定义初始值 double fenZi = 4; //分子为4 do...
  • java程序计算圆周率

    2013-05-11 21:02:00
    昨晚波士堂看到王兴背诵圆周率,感到有兴趣了,于是下个txt,圆周率100万位开始背诵,太辛苦,代码实现出来继续背。   package com.xjtu.pi; /** * π的随机数算法 * 描述: * 在单位正方形中,随机往里面...
  • 蒙特卡罗方法计算圆周率π(java实现) 一、蒙特卡洛(Monte Carlo)方法简介 蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的...
  • 着急,在线等,Java语言怎么用蒙特卡洛法计算圆周率? 着急,在线等,Java语言怎么用蒙特卡洛法计算圆周率? 着急,在线等,Java语言怎么用蒙特卡洛法计算圆周率
  • 蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计问题。假设有一块边长为2的...这就是蒙特·卡罗发明的用于计算圆周率近似值的方法。编写程序,模拟...
  • ExecutorService poor = Executors.newFixedThreadPool(tNum);

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,451
精华内容 2,180
关键字:

计算圆周率java

java 订阅