隨筆 - 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 閱讀(611) 評論(0)  編輯  收藏 所屬分類: j2se
          主站蜘蛛池模板: 连南| 福鼎市| 罗平县| 册亨县| 芒康县| 陵川县| 宜黄县| 富民县| 巴马| 秦皇岛市| 客服| 康乐县| 康定县| 保康县| 衢州市| 邢台县| 泸州市| 汾西县| 自治县| 鄱阳县| 南溪县| 和顺县| 沅陵县| 准格尔旗| 潜山县| 龙胜| 怀柔区| 利津县| 沅陵县| 平远县| 宜君县| 清镇市| 寻乌县| 达州市| 澄江县| 宜丰县| 无极县| 大姚县| 厦门市| 利辛县| 临沧市|