给你一个例子吧,不知道对不对 public class Pi { public static void main(String[] args) { float pi = 1.0f; for( float i = 3; i < 2000; i+=2) { pi -= 1/i; i += 2; pi += 1/i; } System.out.println(pi * 4); } }
public class PI { public static void main(String[] args) { double pi4 = 0; int sign = -1; for (int i = 1; i <= 2000; i++) { sign = -sign; pi4 += (sign * 1.0) / (2 * i - 1); } System.out.println(pi4 * 4); System.out.println(Math.PI); } }循环 2000 次的精度相差很多。
public Test{ public static void main(String[] args){ double pi = 0; int sin = 0; for(int i = 1; i <= 2000 ; i++){ if(i%2==0){ sin = -1; }else{ sin = 1; } pi = pi + (sin * ((float)1 / i)); } pi = pi * 4; System.out.println(pi); } } 没环境,没有测试~_~!
public class PI { public static void main(String args[]) { System.out.println(getPI(2000)); } static double getPI(int c) { double f1; f1=1; for (int i=2;i<=c;i++) { if (i % 2==0) f1=f1-1.0/(2*i-1); else f1=f1+1.0/(2*i-1); } return f1*4; } }
public class Pi { public static void main(String[] args) {
float pi = 1.0f;
for( float i = 3; i < 2000; i+=2) {
pi -= 1/i;
i += 2;
pi += 1/i;
}
System.out.println(pi * 4);
}
}
public static void main(String[] args) {
double pi4 = 0;
int sign = -1;
for (int i = 1; i <= 2000; i++) {
sign = -sign;
pi4 += (sign * 1.0) / (2 * i - 1);
}
System.out.println(pi4 * 4);
System.out.println(Math.PI);
}
}循环 2000 次的精度相差很多。
public static void main(String[] args){
double pi = 0;
int sin = 0;
for(int i = 1; i <= 2000 ; i++){
if(i%2==0){
sin = -1;
}else{
sin = 1;
}
pi = pi + (sin * ((float)1 / i));
}
pi = pi * 4;
System.out.println(pi);
}
}
没环境,没有测试~_~!
public class PI
{
public static void main(String args[])
{
System.out.println(getPI(2000));
} static double getPI(int c)
{
double f1;
f1=1;
for (int i=2;i<=c;i++)
{
if (i % 2==0)
f1=f1-1.0/(2*i-1);
else
f1=f1+1.0/(2*i-1);
}
return f1*4;
}
}
我只能这么处理 (1/2n-1)*Math.pow(-1,n+1)