使用java BigDecimal完成圆周率π的计算(3)

2019-05-18 21:44

使用java BigDecimal完成圆周率π的计算

184-11

Yasumasa Kanada

从左至右:Eugene Salamin,Yasumasa Kanada, David H. Bailey,William Gosper

使用java BigDecimal完成圆周率π的计算

184-12

import java.util.*; import java.math.*; /**

*

Title:π 圆周率的计算

*

Description:使用java BigDecimal完成圆周率(Chudnovsky公式)的计算。可以指定计算精度和计算参数。

*/

public class Pi {

private BigDecimal result;

public Pi() { }

public void run(int n, int scale) {

if(System.getProperty(\ System.out.println(\ }

BigDecimal upper = new BigDecimal(426880.0000 * Math.sqrt(10005.0000)); upper = upper.setScale(scale, BigDecimal.ROUND_HALF_EVEN);

if(System.getProperty(\ System.out.println(\ }

BigDecimal downer = BigDecimal.valueOf(0);

for (int i = 0; i <= n; i++) {

BigDecimal d0 = factorial(6 * i).multiply ( new BigDecimal( 545140134 * i + 13591409));

BigDecimal d1 = factorial(i); BigDecimal d2 = pow(d1, 3); BigDecimal d3 = factorial(3 * i);

BigDecimal d4 = pow(-640320, 3 * i); BigDecimal d5 = d2.multiply(d3); BigDecimal d6 = d4.multiply(d5);

BigDecimal d = d0.divide( d6, BigDecimal.ROUND_HALF_EVEN );

downer = downer.add(d);

使用java BigDecimal完成圆周率π的计算

184-13

}

if(System.getProperty(\

System.out.println(\ }

if(System.getProperty(\

System.out.println(\ System.out.println(\ }

result = upper.divide(downer, BigDecimal.ROUND_HALF_EVEN);

if(System.getProperty(\

System.out.println(\ } }

public BigDecimal getResult() {

return result; }

public static BigDecimal pow(double val, int power){ return pow(new BigDecimal(val), power); }

public static BigDecimal pow(BigDecimal val, int power){ BigDecimal value = BigDecimal.valueOf(1); for(int i = 1; i <= power; i ++){ value = value.multiply(val); }

return value; }

public static BigDecimal factorial(int n){

BigDecimal value = BigDecimal.valueOf(1); for(int i = 1; i <=n ; i++){

value = value.multiply(BigDecimal.valueOf(i)); }

return value; }

使用java BigDecimal完成圆周率π的计算

184-14

public static void main(String[] args) { if(args.length < 2){

System.out.println(\\+ \nz-baby.Pi \+ \参数(0-无穷大) 精度(1-4294967296)\

System.out.println(\ System.exit(-1); }

int n = Integer.parseInt(args[0]); int scale = Integer.parseInt(args[1]);

System.out.println(\

System.out.println(\ Pi p = new Pi(); p.run(n, scale);

System.out.println(\ System.out.println(\ } }


使用java BigDecimal完成圆周率π的计算(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:视频网站可行性分析报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: