隨筆 - 154  文章 - 60  trackbacks - 0
          <2008年3月>
          2425262728291
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          聲明:

          該blog是為了收集資料,認識朋友,學習、提高技術,所以本blog的內容除非聲明,否則一律為轉載!!

          感謝那些公開自己技術成果的高人們!!!

          支持開源,尊重他人的勞動!!

          常用鏈接

          留言簿(3)

          隨筆分類(148)

          隨筆檔案(143)

          收藏夾(2)

          其他

          學習(技術)

          觀察思考(非技術)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          代碼:
          import java.math.BigDecimal;

          public class Arith {
            
          private static final int DEF_DIV_SCALE = 10;

            
          private Arith() {

            }


            
          /**
             * 提供精確的加法運算。

             * 
          @param v1 被加數

             * 
          @param v2 加數

             * 
          @return 兩個參數的和

             
          */


            
          public static double add(double v1, double v2) {

              BigDecimal b1 
          = new BigDecimal(Double.toString(v1));

              BigDecimal b2 
          = new BigDecimal(Double.toString(v2));

              
          return b1.add(b2).doubleValue();

            }


            
          /**
             * 提供精確的減法運算。

             * 
          @param v1 被減數

             * 
          @param v2 減數

             * 
          @return 兩個參數的差

             
          */


            
          public static double sub(double v1, double v2) {

              BigDecimal b1 
          = new BigDecimal(Double.toString(v1));

              BigDecimal b2 
          = new BigDecimal(Double.toString(v2));

              
          return b1.subtract(b2).doubleValue();

            }


            
          /**
             * 提供精確的乘法運算。

             * 
          @param v1 被乘數

             * 
          @param v2 乘數

             * 
          @return 兩個參數的積

             
          */


            
          public static double mul(double v1, double v2) {

              BigDecimal b1 
          = new BigDecimal(Double.toString(v1));

              BigDecimal b2 
          = new BigDecimal(Double.toString(v2));

              
          return b1.multiply(b2).doubleValue();

            }


            
          /**
             * 提供(相對)精確的除法運算,當發生除不盡的情況時,精確到

             * 小數點以后10位,以后的數字四舍五入。

             * 
          @param v1 被除數

             * 
          @param v2 除數

             * 
          @return 兩個參數的商

             
          */


            
          public static double div(double v1, double v2) {

              
          return div(v1, v2, DEF_DIV_SCALE);

            }


            
          /**
             * 提供(相對)精確的除法運算。當發生除不盡的情況時,由scale參數指

             * 定精度,以后的數字四舍五入。

             * 
          @param v1 被除數

             * 
          @param v2 除數

             * 
          @param scale 表示表示需要精確到小數點以后幾位。

             * 
          @return 兩個參數的商

             
          */


            
          public static double div(double v1, double v2, int scale) {

              
          if (scale < 0{

                
          throw new IllegalArgumentException(
                    
          "The scale must be a positive integer or zero");

              }


              BigDecimal b1 
          = new BigDecimal(Double.toString(v1));

              BigDecimal b2 
          = new BigDecimal(Double.toString(v2));

              
          return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();

            }


            
          /**
             * 提供精確的小數位四舍五入處理。

             * 
          @param v 需要四舍五入的數字

             * 
          @param scale 小數點后保留幾位

             * 
          @return 四舍五入后的結果

             
          */


            
          public static double round(double v, int scale) {

              
          if (scale < 0{

                
          throw new IllegalArgumentException(
                    
          "The scale must be a positive integer or zero");

              }


              BigDecimal b 
          = new BigDecimal(Double.toString(v));

              BigDecimal one 
          = new BigDecimal("1");

              
          return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();

            }


          }

          posted on 2008-03-20 14:12 lk 閱讀(615) 評論(0)  編輯  收藏 所屬分類: j2se
          主站蜘蛛池模板: 壶关县| 邯郸县| 三门峡市| 富蕴县| 绥中县| 金山区| 信丰县| 巴彦县| 金华市| 辛集市| 冷水江市| 高碑店市| 久治县| 武强县| 高邮市| 瓮安县| 鲁山县| 区。| 苏尼特右旗| 石棉县| 华亭县| 昂仁县| 台北市| 沧源| 湘西| 稻城县| 伽师县| 什邡市| 乐昌市| 柯坪县| 邹城市| 桓仁| 石渠县| 斗六市| 海宁市| 贵州省| 会宁县| 京山县| 台中县| 崇信县| 桑日县|