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

          聲明:

          該blog是為了收集資料,認(rèn)識(shí)朋友,學(xué)習(xí)、提高技術(shù),所以本blog的內(nèi)容除非聲明,否則一律為轉(zhuǎn)載!!

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

          支持開源,尊重他人的勞動(dòng)!!

          常用鏈接

          留言簿(3)

          隨筆分類(148)

          隨筆檔案(143)

          收藏夾(2)

          其他

          學(xué)習(xí)(技術(shù))

          觀察思考(非技術(shù))

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          代碼:
          import java.math.BigDecimal;

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

            
          private Arith() {

            }


            
          /**
             * 提供精確的加法運(yùn)算。

             * 
          @param v1 被加數(shù)

             * 
          @param v2 加數(shù)

             * 
          @return 兩個(gè)參數(shù)的和

             
          */


            
          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();

            }


            
          /**
             * 提供精確的減法運(yùn)算。

             * 
          @param v1 被減數(shù)

             * 
          @param v2 減數(shù)

             * 
          @return 兩個(gè)參數(shù)的差

             
          */


            
          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();

            }


            
          /**
             * 提供精確的乘法運(yùn)算。

             * 
          @param v1 被乘數(shù)

             * 
          @param v2 乘數(shù)

             * 
          @return 兩個(gè)參數(shù)的積

             
          */


            
          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();

            }


            
          /**
             * 提供(相對(duì))精確的除法運(yùn)算,當(dāng)發(fā)生除不盡的情況時(shí),精確到

             * 小數(shù)點(diǎn)以后10位,以后的數(shù)字四舍五入。

             * 
          @param v1 被除數(shù)

             * 
          @param v2 除數(shù)

             * 
          @return 兩個(gè)參數(shù)的商

             
          */


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

              
          return div(v1, v2, DEF_DIV_SCALE);

            }


            
          /**
             * 提供(相對(duì))精確的除法運(yùn)算。當(dāng)發(fā)生除不盡的情況時(shí),由scale參數(shù)指

             * 定精度,以后的數(shù)字四舍五入。

             * 
          @param v1 被除數(shù)

             * 
          @param v2 除數(shù)

             * 
          @param scale 表示表示需要精確到小數(shù)點(diǎn)以后幾位。

             * 
          @return 兩個(gè)參數(shù)的商

             
          */


            
          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();

            }


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

             * 
          @param v 需要四舍五入的數(shù)字

             * 
          @param scale 小數(shù)點(diǎn)后保留幾位

             * 
          @return 四舍五入后的結(jié)果

             
          */


            
          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 閱讀(611) 評(píng)論(0)  編輯  收藏 所屬分類: j2se
          主站蜘蛛池模板: 浦县| 齐齐哈尔市| 股票| 行唐县| 建宁县| 赤水市| 石林| 通化市| 吴江市| 集贤县| 临沧市| 彭州市| 桑植县| 肥东县| 灵寿县| 武隆县| 金寨县| 平顶山市| 芜湖市| 聂荣县| 莱阳市| 平武县| 溧阳市| 增城市| 手游| 凤阳县| 民丰县| 泰顺县| 永州市| 白银市| 闻喜县| 肥东县| 阜宁县| 衡阳县| 邻水| 将乐县| 虎林市| 故城县| 寻甸| 浪卡子县| 三台县|