• java计算圆周率


    借鉴博客:https://wenku.baidu.com/view/ed9246f1cd2f0066f5335a8102d276a2002960e8.html

    java代码

    package com.example.demo01.test;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import java.math.BigDecimal;
    import java.util.Date;
    import java.util.Scanner;
    
    /**
     * @Description TODO
     * @Author zhouruntao
     * @Date 2022/6/20 10:55
     */
    public class Test02Circle {
    
    
        private static final Logger log = LoggerFactory.getLogger(Test02Circle.class);
    
        static void cut(int n){
    
            double y=1.0;
    
            for(int i=0;i<=n;i++){
    
                double π=3*Math.pow(2, i)*y;
    
                log.info(""+i+"次切割,为正"+(6+6*i)+"边形,圆周率π≈"+π);
    
                y=Math.sqrt(2-Math.sqrt(4-y*y));
    
            }
    
        }
    
        public static void main(String[] str){
    
    
            BigDecimal fz = BigDecimal.ONE;
            BigDecimal fz1 = new BigDecimal("5");
            BigDecimal fz2 = new BigDecimal("239");
    
            BigDecimal fm1 = new BigDecimal("25");
            BigDecimal fm2 = new BigDecimal("57121");
            BigDecimal a = new BigDecimal("4");
            BigDecimal b = new BigDecimal("1");
            BigDecimal c = new BigDecimal("2");
    
            int flag = 1;
    
            BigDecimal result1;
            BigDecimal r1;
            BigDecimal r2;
    
            BigDecimal result = new BigDecimal("0");
    
            //精确迭代10000次
            int n = 10000;
            int i = 1;
    
    
            long time1 = new Date().getTime();
    
            while(i < n){
                i++;
    
                r1 = fz.divide(fz1.multiply(b), n, BigDecimal.ROUND_DOWN);
                r2 = fz.divide(fz2.multiply(b), n, BigDecimal.ROUND_DOWN);
    
                if(flag == 1 ){
                    result1 = a.multiply(r1).subtract(r2);
    
                    flag = -1;
                }else{
                    result1 = r2.subtract(a.multiply(r1));
                    flag = 1;
                }
    
                result = result.add(result1);
    
                b = b.add(c);
                fz1 = fz1.multiply(fm1);
                fz2 = fz2.multiply(fm2);
    
            }
    
            long time2 = new Date().getTime();
    
            log.info("p计算的结果: \n" + result.multiply(a).toString().substring(0, 1000));
            log.info("p计算时间:\n" + (time2-time1) + "毫秒");
    
    
        }
    
    
    
    
    
    }
    3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019
    15:17:07.941 [main] INFO com.example.demo01.test.Test02Circle - p计算时间:
    3329毫秒

  • 相关阅读:
    Java事务管理学习一 JDBC的事务控制
    grafana监控配置
    Linux系统上传公钥不生效问题
    CentOS 定时计划任务设置
    shell脚本加密
    aotocomplete
    aotocomplete1
    浮动
    http://lifesinger.org/blog/2009/07/kissysuggest/
    dataTable转换成Json格式
  • 原文地址:https://www.cnblogs.com/spll/p/16393370.html
Copyright © 2020-2023  润新知