java计算圆周率
2022/6/21 1:21:28
本文主要是介绍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计算圆周率的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-04TiDB 资源管控的对撞测试以及最佳实践架构
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现