java+卡有型号吗,第一次写java代码,就卡主了,真是惨,有木有大腿来帮忙调试一下...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是一个用高斯公式,计算圆周率pi的代码,可惜我不会java,只能凭空想想百度自己写写,结果就是运行不了啊,求大腿

/*高斯公式 参考网址 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);//输出程序运行时间
}}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
