import java.math.*;
public class wrenwren
{ //PI=4*(1-1/3+1/5-1/7...) 
public static void main(String args[])
{
int count = 2E31-1;
double pi = 0;
double k = 1;
for (int i = 1, j = 3; i < count; i++)
{

if (j % 2 != 0)
{
pi += 1.0 / k;
k += 2;
j = 2;
}
else
{
pi -= 1.0 / k;
j = 3;
k += 2;
} }
System.out.print("pi=" + 4*pi);
}
}怎么越位了??

解决方案 »

  1.   

    int count = (int)2E31-1; 
      

  2.   


    为什么int i=1;正确 int i=2E31-1就不行呢??
      

  3.   

    因为用科学记数法时,认为是double型.如2E31-1;而1没有任何修饰所以默认为int型
      

  4.   

    想用int类型的最大值可以用Integer.MAX_VALUE
    int count = Integer.MAX_VALUE
      

  5.   

    不做声明默认为double的,你要像紫竹前辈那样做才可以
      

  6.   

    Java int 型 4 bytes 区分正负,-2147483648到2147483647
    Java double 型 15 位精度左右
    看来精度可能不够