隨筆-31  評論-7  文章-0  trackbacks-0

          package lc.util;

          import java.math.BigDecimal;

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

           private MathHelper() {

           }

           /**
            * 提供精確的加法運算。
            *
            * @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();
           }
          }



          --------------------------
          09博客園紀念T恤
          新聞:王建宙臺灣布道TD:痛快,一起努力的感覺
          網站導航: 博客園首頁  個人主頁  新聞  社區  博問  閃存  找找看
          文章來源:http://www.cnblogs.com/xiaoao808/archive/2009/05/20/1469589.html
          posted on 2009-05-20 17:13 破名超難起 閱讀(314) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 黔西县| 房产| 凤冈县| 吉隆县| 北京市| 屏东县| 麻城市| 视频| 德昌县| 乌拉特前旗| 襄城县| 大安市| 丹巴县| 婺源县| 亚东县| 牙克石市| 临高县| 朝阳市| 焦作市| 永丰县| 南漳县| 资兴市| 连江县| 正镶白旗| 镇沅| 白水县| 鹤庆县| 洛阳市| 青州市| 承德市| 昌吉市| 西乡县| 临沭县| 保德县| 临沧市| 武城县| 新兴县| 顺平县| 昌邑市| 天门市| 玉树县|