<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-71  評論-4  文章-0  trackbacks-0
    由于Java的簡單類型不能夠精確的對浮點數進行運算,這個工具類提供精確的浮點數運算,包括加減乘除和四舍五入。

    以下為代碼:

    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 2005-11-12 20:24 zjw_albert 閱讀(91) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 久久精品免费观看国产| 久久国产精品亚洲综合| 国产男女爽爽爽爽爽免费视频| 国产成人亚洲精品91专区高清 | 亚洲综合精品伊人久久| 国产AV无码专区亚洲Av| 亚洲第一视频在线观看免费| 操美女视频免费网站| 7m凹凸精品分类大全免费| 美女网站在线观看视频免费的| 精品国产日韩亚洲一区91| 亚洲综合激情五月色一区| 亚洲冬月枫中文字幕在线看| 亚洲AV第一页国产精品| 亚洲一区爱区精品无码| AV在线亚洲男人的天堂| 亚洲av高清在线观看一区二区| 午夜精品在线免费观看| 99久久综合国产精品免费| 中文字幕在线免费观看| 999久久久免费精品播放| 四虎成人精品永久免费AV| 99视频在线观看免费| 最新亚洲成av人免费看| 国产黄色免费观看| 国产美女视频免费观看的网站 | 日产国产精品亚洲系列| 国产在线19禁免费观看国产| 午夜高清免费在线观看| 德国女人一级毛片免费| 日韩成人在线免费视频| 成人免费无码精品国产电影| 免费观看的毛片手机视频| 日本特黄特色免费大片| 免费永久国产在线视频| 亚洲国产一成久久精品国产成人综合| 日韩亚洲国产二区| 国产亚洲美日韩AV中文字幕无码成人 | 超清首页国产亚洲丝袜| 久久99国产亚洲高清观看首页| 久久国产亚洲精品麻豆|