12,javase程式碼實戰-迴圈控制——用while計算1+1/ 2!+1/ 3!+....+1/ 10!(三)
問題介紹:
計算1+1/2!+1/3!+….+1/10!。
問題分析:
因為存在小數,所以使用基本資料型別進行運算,肯定會丟失精度,所以要使用java中的BigDecimal實現。
程式碼實現:
/**
* 1,建立sum 儲存累加和
* 2,外層for迴圈用於控制累加的次數
* 內層for迴圈實現分母的階層。
* 使用BigDecimal來實現計算
*
*/
int n=10;
int k =1;
BigDecimal sum =new BigDecimal("0");//總和
BigDecimal fz =new BigDecimal("1.0");//分子1
for(int i =1;i<=n;i++){
k=1;
for(int j =1;j<=i;j++){//計算 階乘的分母
k*=j;
}
//實現累加 保留小數5位 舍入模式(四捨五入)
sum =sum.add(fz.divide(new BigDecimal(k),5, BigDecimal.ROUND_HALF_EVEN));
}
System.out.println("和為:"+sum);
效果圖:
總結:
1,實現累加時,只用sum.add()是不能實現累加的,因為執行加減乘除都是返回一個新的物件的,不在儲存到原來的sum物件中。因為BigDecimal都是不可變的(immutable)的,在進行每一步運算時,都會產生一個新的物件,所以a.add(b);雖然做了加法操作,但是a並沒有儲存加操作後的值,正確的用法應該是a=a.add(b);
2,在new BigDecimal()時,傳入的引數應是整型或者字串的,若是浮點型的話,也會造成二進位制表達不精確的問題。
3,Non-terminating decimal expansion; no exact representable decimal result異常,說明無法結束的除法表示式;沒有精確的除結果,要為其指定精確的小數位數,舍入模式。
相關文章
- 14,javase程式碼實戰-迴圈控制——foreach迴圈的使用(五)Java
- 10,javase程式碼實戰-迴圈控制——使用while與自增運算子實現遍歷陣列(一)JavaWhile陣列
- 13,javase程式碼實戰-迴圈控制——for迴圈輸出空心的菱形(四)Java
- 15,javase程式碼實戰-迴圈控制——迴圈的終止與過濾(六)Java
- 11,javase程式碼實戰-迴圈控制——for迴圈實現九九乘法表(二)Java
- 04流程控制 for迴圈,while迴圈While
- 碎片化學習Java(二十四)Java while迴圈計算 1 到 10 的和JavaWhile
- 1,javase程式碼實戰——基礎語法(一)Java
- 實驗三:分別用for、while和do-while迴圈語句以及遞迴方法計算n!,並輸出算式While遞迴
- 最簡單的C實現控制檯掃雷1+1=2
- 碎片化學習Java(二十五)Java do while迴圈計算 1 到 10 的和JavaWhile
- while迴圈以及do while迴圈While
- 從1+1=2來理解Java位元組碼Java
- 實驗2 c語言分支與迴圈基礎應用程式設計1C語言程式設計
- 實驗2 C語言分支與迴圈基礎應用程式設計-1C語言程式設計
- C語言程式設計學習中while迴圈和do……while迴圈C語言程式設計While
- 實驗5 迴圈結構程式設計(while、do-while語句的應用)程式設計While
- 實驗5迴圈結構程式設計(while、do-while語句的應用)程式設計While
- C語言——迴圈結構(for迴圈,while迴圈,do-while迴圈)C語言While
- 2,javase程式碼實戰-運算子——位運算實現加密解密 (一)Java加密解密
- while迴圈While
- Shell指令碼應用 – for、while迴圈語句指令碼While
- Flutter+小程式容器: 1+1>2的解決方案Flutter
- 超融合要“超越融合” 實現1+1大於2
- javascript基礎(控制流程(迴圈 while,for))(十二)JavaScriptWhile
- C#程式設計基礎第七課:C#中的基本迴圈語句:while迴圈、do-while迴圈、for迴圈、foreach迴圈的使用C#程式設計While
- 拯救運維人!智慧運維如何實現1+1>2運維
- PHP For & While 迴圈PHPWhile
- Java 迴圈 - for, while 及 do…whileJavaWhile
- 1+1>2,Paddle Lite與EdgeBoard無縫連線,快速實現部署應用
- 人工智慧與區塊鏈:1+1>2人工智慧區塊鏈
- 技術如何轉產品01——1+1>2?
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-WHILE迴圈SQLWhile
- 雲端計算學習路線原始碼框架筆記:while迴圈結構原始碼框架筆記While
- 好程式設計師Web前端分享程式的三大結構(二)while迴圈程式設計師Web前端While
- c語言中,while(1)語句使用break語句跳出迴圈C語言While
- C#練習,應用for,while,do-while迴圈C#While
- C++:不同迴圈結構計算從1到100的累加和C++