A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王渠 中级黑马   /  2012-6-4 15:45  /  2160 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王渠 于 2012-6-4 15:51 编辑
  1. public class Exercise5_14 {
  2.         public static void main(String[] args){
  3.                 System.out.println("i\tm(i)");
  4.                 for(int i =10;i<=100;i+=10)
  5.                         System.out.println(i+"\t"+sum(i));
  6.         }
  7.         public static double sum(int n){
  8.                 double sum = 0;
  9.                 int temp = 1;
  10.                 while(temp!=n){
  11.                         sum += 1/(2*temp-1.0)-1/(2*temp+1.0);
  12.                         temp++;
  13.                 }
  14.                 return 4 * sum;
  15.         }
  16. }
复制代码
π = 4*(1-1/3+1/5-1/7+...+1/(2i-1)-1/(2i+1)
请问应该怎样修改代码,才可以得到精确的答案呢

3 个回复

倒序浏览
lz你好好看你代码的逻辑
你的代码写出来就是这样的1-1/3+1/3-1/5+1/5....
每次temp自增两层次即可。这种求pi的问题没啥意思的,用java提供的常量就好了。
回复 使用道具 举报
  1. public class Exercise5_14 {

  2.         public static void main(String[] args){

  3.                 System.out.println("i\tm(i)");

  4.                 for(int i =10;i<=100;i+=10)

  5.                         System.out.println(i+"\t"+sum(i));

  6.         }

  7.         public static double sum(int n){

  8.                 double sum = 0;
  9.                 int temp = 1;
  10.                 double a=1;  //用于控制除数
  11.                 while(temp!=n){
  12.                                        

  13.                       //  sum += 1/(2*temp-1.0)-1/(2*temp+1.0);要实现 4*(1-1/3+1/5-1/7+...+1/(2i-1)-1/(2i+1)
  14.                       //可以找规律temp是偶数时是加,奇数是减
  15.                                          if(temp%2!=0)
  16.                                         {
  17.                                                   sum+=1/a;
  18.                                         }
  19.                                         else
  20.                                         {
  21.                                                 sum-=1/a;
  22.                                         }
  23.                                         a+=2;
  24.                     temp++;

  25.                 }

  26.                 return 4 * sum;

  27.         }

  28. }
复制代码
D:\java>java Exercise5_14
i       m(i)
10      3.2523659347188767
20      3.1941879092319425
30      3.1760651768684385
40      3.167229468186238
50      3.161998692995051
60      3.158540589307148
70      3.1560846463985
80      3.1542503744801236
90      3.1528282540763923
100     3.1516934060711166

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
π的近似值
π=4-4/3+4/5-4/7+4/9-4/11……
代码如下:
public class Five {
        public static void main(String[] args){
               System.out.println("i\tm(i)");
                for(int i =10;i<=100;i+=10)
                        System.out.println(i+"\t"+sum(i));
       }
        public static double sum(int n){
               double sum = 4;
                int temp = 1;
               while(temp!=n){
                        sum +=4/(temp*4.0+1.0)-4.0/(temp*4.0-1.0);          
                        temp++;
                }
                return sum;
        }
}
结果如下:
i        m(i)
10        3.1941879092319416
20        3.1672294681862376
30        3.1585405893071488
40        3.1542503744801254
50        3.1516934060711175
60        3.149995866593472
70        3.1487868051117247
80        3.1478818995749496
90        3.147179202180863
100        3.146617747495459

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马