java根据公式求PI,为什么不对呢?求大神帮助啊~
发布网友
发布时间:2022-05-02 09:15
我来回答
共2个回答
热心网友
时间:2023-05-11 02:43
改的很难看,希望你喜欢
if判断这里,用i/2
求t时用类似下面这种方式
double t=(1.0/(2.0*(double)i-1.0))*(double)k;
这样就没问题了,原先会出问题时if判断那里和计算t那里不应该用n,而应该用i,另外根据java语法规则,你的算式中的int型变量(i,k以及数字)会影响计算结果,所以需要强制转换一下,以上
热心网友
时间:2023-05-11 02:43
int i =0;
int k =1000;//迭代次数
//用于输出计算公式
StringBuilder sb = new StringBuilder();
//我是从1作为起始和
double sum = 1.0;
sb.append("1");
while(i++<k){
boolean b = i%2==1;
double n = (2.0*i+1)*(b?-1:1);//选择符号
sum = sum +1.0/n;
//拼接字符串
sb.append(b?"-":"+"+"1/"+Math.abs(n));
}
System.out.println(sum*4);
//输出计算过程
System.out.println(sb.toString());