蓝桥杯备赛 圆周率问题(Java大整数)

题目描述

•人们创造了上百种方法求圆周率π的值。其中比较常用且易于编程的是无穷级数法。
    •π/4 = 1 – 1/3 + 1/5 – 1/7 + 1/9 - …
    •是初学者特别喜欢的一个级数形式,但其缺点是收敛太慢。
    •π/2 = 1 + 1/3 +1/3*2/5 + 1/3 *2/5 *3/7 + 1/3 *2/5 * 3/7 *4/9 + …
    •是收敛很快的一个级数方法。
    •请你利用这个方法,写出精确到小数点后100位精度的圆周率。
    •注意:尾数的四舍五入! 尾数是0也要保留!
    •显然答案是一个小数,其小数点后有100位数字,请通过浏览器直接提交该数字。

**import java.math.BigDecimal;
public class Main {
	public static void main(String[] args)
	{
//      第一种级数方式,太慢了,算不出来,不精确
		//double PI = 0;
		BigDecimal PI =BigDecimal.ZERO;
		BigDecimal j=BigDecimal.ONE;//变量j
		BigDecimal k=BigDecimal.ONE;//常量k			
		BigDecimal m=BigDecimal.valueOf(2);//大整数2
		BigDecimal n=BigDecimal.valueOf(-1);//大整数-1
		//PI+=1.0/(2*i-1)*a;// 1 -1 1 -1
		BigDecimal a=BigDecimal.ONE;//变量a 1 -1 1 -1	
		for(int i=1;i<900000;i++)
		{
			PI=PI.add(k.divide(m.multiply(j).subtract(k),105,BigDecimal.ROUND_HALF_UP).multiply(a));//pi+=1/(2*j-1)*a
			j=j.add(BigDecimal.ONE);//j++;
			a=a.multiply(BigDecimal.valueOf(-1));
			//PI=BigDecimal.ONE.divide((2*i-1)*Math.pow(-1,i+1 ));
		}
		PI=PI.multiply(BigDecimal.valueOf(2));
		System.out.print(PI.setScale(100,BigDecimal.ROUND_HALF_UP));
		
		//第二种级数方式1000和2000交叉取数即可
		BigDecimal PI0 =BigDecimal.ONE;//临时pi
		BigDecimal PI1 =BigDecimal.ONE;//真正的pi
		BigDecimal i=BigDecimal.ONE;//变量i			
		BigDecimal j=BigDecimal.ONE;//变量j
		BigDecimal m=BigDecimal.valueOf(2);//大整数2
		BigDecimal n=BigDecimal.valueOf(1);//大整数1
		for(int s=0;s<200;s++)
		{
			PI0=PI0.multiply(i.divide(m.multiply(i).add(n),1005,BigDecimal.ROUND_HALF_UP));//PI0*=1/(2*i+1);
			PI1=PI1.add(PI0);
			i=i.add(BigDecimal.ONE);//i++;
		}
		PI1=PI1.multiply(BigDecimal.valueOf(2));
		System.out.print(PI1.setScale(1000,BigDecimal.ROUND_HALF_UP));
	}
}**


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值