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毫秒
。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本