Java的菜鸟问题,实在找不到原因
计算Pi的值:   
 import   java.io.*; 
 public   class   pi{ 
       public   static   void   main(String[]   args){   
       float   t=-1; 
       double   sum=0;   
       System.out.println( "Input   the   number   of   iterations: ");   
       String   s   =   null; 
       float   n=0;   
    BufferedReader   br      =   new   BufferedReader(new   InputStreamReader(System.in));      
    try   { 
          s   =   br.readLine(); 
    } 
    catch   (
IOException   e)   { 
 	e.printStackTrace(); 
    }   
    n   =   Float.parseFloat(s); 
       for   (float   i=1;i <=n;i=i+2){ 
                   t=t*(-1); 
                   sum=sum+(t/i); 
       }   
    sum=sum*4; 
    System.out.println( "pi= "+sum);   
    } 
 }   
 程序可以编译运行, 
 问题是输入30000000可以立即计算出值来,输入35000000以上的值就死翘翘了,什么原因呢
------解决方案--------------------数值溢出,造成死循环,你把所有的float替换成double
------解决方案--------------------帮顶,顺路接分
------解决方案--------------------for (float i = 1; i  <= n; i = i + 2)    
 主要是这个 float    
 for (double i = 1; i  <= n; i = i + 2)
------解决方案--------------------double 
------解决方案--------------------路过 
 友情接分
------解决方案--------------------
------解决方案--------------------不过好像运算结果不对,我记得PI的前几位是 
 3.141592653589793...   
 =========================   
 3.141592653589793238462643383279502884197169399375105820   
 我就急得这么多了。 
------解决方案--------------------当然要用double型的撒
------解决方案--------------------赫赫,超过float取值范围了。
------解决方案--------------------你果然很牛,PI后面小数记了那么多位~   
 java好像不提供捕获数据溢出异常,用catch捕获不到此异常,
------解决方案--------------------呵呵。您定义的是float的数据类型。这个数据类型没有那么大的范围超出了能计算的范围。如果你换成double就可以了。。不行你试试
------解决方案--------------------你给float a=35000000; 
 System.out.println( " " + a); 
 System.out.println( " " + (a+2)); 
 试试,没超过范围,超过精度了