java+卡有型号吗,第一次写java代码,就卡主了,真是惨,有木有大腿来帮忙调试一下...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

这是一个用高斯公式,计算圆周率pi的代码,可惜我不会java,只能凭空想想百度自己写写,结果就是运行不了啊,求大腿

3546c8f94fbd2f518df6f1624b444f7f.png

/*高斯公式 参考网址 http://www.cqvip.com/read/read.aspx?id=33099664

pi/4=12*arctan(1/18)+8*arctan(1/57)-5*arctan(1/239)

arctanx=x-x^3/3+x^5/5-x^7/7+...

这里的x相当1/18,1/57,1/239.

比如当精度1,只计算x-x^3/3时

x=1/18 1/18-(1/18)^3/3=0.055498399634202

x=1/56 0.01754205972508

x=1/239 0.0041840760018183

pi=(0.055498399634202*12+0.01754205972508*8-0.0041840760018183*5)*4=3.1415875736079

*/

package arct;

import java.math.*;

public class arct{

//高斯计算arctanx

public static BigDecimal arct(int a,int b){//方法arct计算arctanx,a为18,57,239等整数.b为精度

BigDecimal f=new BigDecimal(Integer.toString(1));//定义变量f,控制符号变量f

BigDecimal dd=new BigDecimal(Integer.toString(1));//定义变量dd

BigDecimal d = new BigDecimal( Integer.toString(a)); //改变a的值类型

BigDecimal b1= new BigDecimal(Integer.toString(1)); //定义一个初始值为1的变量,用来当分母初始值

BigDecimal d2=b1.multiply(d);//定义d2的值为x每次多的次方x^2

BigDecimal r=d;//定义r,最后作为返回结果

int i=1;

for (i = 1; i <= b; i++) {//循环控制精度

b1=b1.add(new BigDecimal(Integer.toString(2)));//分母值每次+2

d=d.multiply(d2);//分子值每次乘以d2(x^2)

dd=d.multiply(b1);//2者相乘

if( i%2 == 1){//if语句改变运算符号

f=new BigDecimal(Integer.toString(-1));

}

else if ( i%2 == 0){

f=new BigDecimal(Integer.toString(1));

}

dd=f.divide(dd);//根据符号变量f,f控制符号的同时作分子

r=r.add(dd);

}

return r;}

public static void main(String[] args) {

//高斯pi/4=12*arctan(1/18)+8*arctan(1/57)-5*arctan(1/239)

Long startTime = System.currentTimeMillis();

BigDecimal d1=arct.arct( 18,100);//调用arctg方法计算arctanx

BigDecimal d2=arct.arct(57,100);

BigDecimal d3=arct.arct(239,100);

d1=d1.multiply(new BigDecimal(Integer.toString(48)));//高斯公式arctan前的系数

d2=d2.multiply(new BigDecimal(Integer.toString(32)));

d3=d3.multiply(new BigDecimal(Integer.toString(20)));

BigDecimal p=new BigDecimal(Integer.toString(0));//定义pi

p=d1.add(d2);

p=p.min(d3);

System.out.println(p); //输出pi

Long endTime = System.currentTimeMillis();

System.out.println(endTime - startTime);//输出程序运行时间

}}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部