最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java簡單計算圓周率完整示例

 更新時間:2018年05月08日 11:56:15   作者:java_zhao33699  
這篇文章主要介紹了Java簡單計算圓周率,結合完整實例形式分析了Java計算圓周率的原理與操作技巧,代碼備有較為詳盡的注釋便于理解,需要的朋友可以參考下

本文實例講述了Java簡單計算圓周率。分享給大家供大家參考,具體如下:

這兩天在網上看到一個題,已知Pi可以用函數4 * (1 – 1/3 + 1/5 – 1/7 + …) 計算,計算出小數點后五位(計算圓周率)。于是手動寫了一個小demo,歡迎大家留言,進行交流與指教。

完整示例代碼如下:

package math;
public class PiTest {
  private static int bytelimit = 5;// 小數后限制位數
  /**
   * @author zhao33699
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    // 已知Pi可以用函數4 * (1 – 1/3 + 1/5 – 1/7 + …) 計算,小數點后五位----計算圓周率
    // 思路:按照上述公式計算出5位值,和下一次5位值比較,如果相同則為最終結果,
    // 如果不同,則保存新值,繼續(xù)與在下次的值比較直至相同
    double pitemp = 0;// 根據公式所得值
    double finalpi = 0; // 上次所得值(小數點后五位)
    double pi = 0;// 本次所得值(小數點后五位)
    int i = 0;// 計數器
    double b = 0;// 公式的括號內的值
    int ii = 20;// 所得相同值次數,可限制最后是有連續(xù)ii次所得相同值
    int finalii = 20;// 與ii值相同,用于在ii值變化后 ,恢復ii值
    // int iii=20;//限制相同次數
    while (true) {
      // 次數控制
      if (i == 1000000) {
        break;
      }
      double rs = 1 + 2 * i;
      double d = 1 / rs;
      if (i % 2 == 0 && i != 1) {
        b = b + d;
        // System.out.println("---"+i+"----正------***"+b);
      } else {
        b = b - d;
        // System.out.println("---"+i+"----負------***"+b);
      }
      i = i + 1;
      // System.out.println(b);
      pitemp = (b) * 4;
      // System.out.println(pitemp);
      // 小數點后位數大于等于5位
      if (String.valueOf(pitemp).length() > bytelimit) {
        pi = subInt(pitemp);// 截取小數點后5位的值
        System.out.println(i + "次---pi--####" + pi + "---final--####"
            + finalpi);
        // 如果上次結果與本次結果相同,限制連續(xù)次數-1;
        // 如果不相同,不管前面連續(xù)多少次結果相同,將限制連續(xù)次數恢復初始值,并保存本次的新值,繼續(xù)準備與下次比較
        if (finalpi == pi) {
          System.out.println("第" + (finalii + 1 - ii)
              + "次-----相同----------最終結果-------------finaoanoaof"
              + pitemp);
          ii = ii - 1;
          if (ii == 0) {
            System.out.println("$$最終所得的小數" + pitemp);
            System.out.println("$$最終所得的前五位小數" + pi);
            break;
          }
        } else {
          finalpi = pi;
          ii = finalii;
        }
      }
    }
  }
  // 格式化小數
  public static double subInt(double i) {
    String s = String.valueOf(i).substring(0, bytelimit + 2);// 獲取 小數點后5位
    String ss = String.valueOf(i).substring(bytelimit + 2, bytelimit + 3);// 獲取小數點第6位
    double dd = Double.parseDouble(s);// 轉化為小數點后保留5位的小數
    // 如果第6位的值大于等于5,根據四舍五入,將轉化后的小數加上0.00001
    if (ss.compareTo("5") >= 0) {
      dd = dd + 0.00001;
    }
    return dd;
  }
}

運行結果:

PS:這里再為大家推薦幾款計算工具供大家進一步參考借鑒:

在線一元函數(方程)求解計算工具:
http://tools.jb51.net/jisuanqi/equ_jisuanqi

科學計算器在線使用_高級計算器在線計算:
http://tools.jb51.net/jisuanqi/jsqkexue

在線計算器_標準計算器:
http://tools.jb51.net/jisuanqi/jsq

更多關于java算法相關內容感興趣的讀者可查看本站專題:《Java數據結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設計有所幫助。

相關文章

  • Java?棧與隊列實戰(zhàn)真題訓練

    Java?棧與隊列實戰(zhàn)真題訓練

    在編寫程序的時候,對于棧與隊列的應用需要熟練的掌握,這樣才能夠確保寫出來的代碼有質量。本文小編就以幾個題目詳細說說Java中的棧與隊列,需要的朋友可以參考一下
    2022-04-04
  • Java 創(chuàng)建線程的兩個方法詳解及實例

    Java 創(chuàng)建線程的兩個方法詳解及實例

    這篇文章主要介紹了Java 創(chuàng)建線程的兩個方法詳解及實例的相關資料,需要的朋友可以參考下
    2017-03-03
  • java多線程編程之使用Synchronized塊同步變量

    java多線程編程之使用Synchronized塊同步變量

    我們可以通過synchronized塊來同步特定的靜態(tài)或非靜態(tài)方法。要想實現(xiàn)這種需求必須為這些特性的方法定義一個類變量,然后將這些方法的代碼用synchronized塊括起來,并將這個類變量作為參數傳入synchronized塊
    2014-01-01
  • Java中的觀察者模式實例講解

    Java中的觀察者模式實例講解

    這篇文章主要介紹了Java中的觀察者模式實例講解,本文先是講解了觀察者模式的概念,然后以實例講解觀察者模式的實現(xiàn),以及給出了UML圖,需要的朋友可以參考下
    2014-12-12
  • 海量數據去重排序bitmap(位圖法)在java中實現(xiàn)的兩種方法

    海量數據去重排序bitmap(位圖法)在java中實現(xiàn)的兩種方法

    今天小編就為大家分享一篇關于海量數據去重排序bitmap(位圖法)在java中實現(xiàn)的兩種方法,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Idea中maven項目實現(xiàn)登錄驗證碼功能

    Idea中maven項目實現(xiàn)登錄驗證碼功能

    這篇文章主要介紹了Idea中maven項目實現(xiàn)登錄驗證碼功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Mybatis的動態(tài)拼接條件方式

    Mybatis的動態(tài)拼接條件方式

    這篇文章主要介紹了Mybatis的動態(tài)拼接條件方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 解決struts2 攔截器修改request的parameters參數失敗的問題

    解決struts2 攔截器修改request的parameters參數失敗的問題

    這篇文章主要介紹了解決struts2 攔截器修改request的parameters參數失敗的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 談談Java中try-catch-finally中的return語句

    談談Java中try-catch-finally中的return語句

    我們知道return語句用在某一個方法中,一是用于返回函數的執(zhí)行結果,二是用于返回值為void類型的函數中,僅僅是一個return語句(return ;),此時用于結束方法的執(zhí)行,也即此return后的語句將不會被執(zhí)行,當然,這種情況下return語句后不能再有其它的語句了
    2016-01-01
  • java如何自定義注解

    java如何自定義注解

    這篇文章主要介紹了java如何自定義注解問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02

最新評論

稷山县| 张掖市| 临洮县| 汉中市| 阜阳市| 洞口县| 阿合奇县| 札达县| 临漳县| 新昌县| 梁平县| 曲沃县| 永和县| 建宁县| 大庆市| 潢川县| 西华县| 铜陵市| 禹城市| 余干县| 汨罗市| 连平县| 海林市| 深州市| 卓尼县| 屏山县| 绍兴县| 阿勒泰市| 柳江县| 东宁县| 改则县| 阳信县| 宁武县| 兴安县| 汉沽区| 日喀则市| 衡南县| 洛扎县| 鹰潭市| 英超| 东台市|