<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 国产AV无码专区亚洲AV琪琪| 亚洲日本久久久午夜精品| 视频免费1区二区三区| 国产精品免费视频播放器| 亚洲欧洲专线一区| 成人毛片免费观看视频| 亚洲国产欧美日韩精品一区二区三区| 黄色成人网站免费无码av| 亚洲一区二区三区国产精华液| 最近最好的中文字幕2019免费 | 亚洲午夜一区二区电影院| 日本高清在线免费| 亚洲一级毛片免费在线观看| 国产精品无码免费播放| 亚洲国产美女精品久久久| 亚洲毛片不卡av在线播放一区| 两性色午夜视频免费网| 亚洲av最新在线网址| 91免费播放人人爽人人快乐| 中日韩亚洲人成无码网站| 亚洲精品无码99在线观看| 最近中文字幕大全免费版在线 | a级毛片免费观看视频| 久久精品国产亚洲AV无码娇色| 久久国内免费视频| 特黄aa级毛片免费视频播放| 亚洲熟女少妇一区二区| 1000部拍拍拍18勿入免费凤凰福利| 国产精品高清视亚洲一区二区 | 亚洲网站在线播放| 免费无码黄网站在线观看| 亚洲精品国产日韩无码AV永久免费网| 亚洲AV成人一区二区三区AV| 成人免费午夜视频| 一级全免费视频播放| 亚洲精品国产免费| 亚洲国产成人爱av在线播放| 中文字幕免费在线观看| 国产精品亚洲一区二区三区 | 亚洲国产成人久久综合一| 亚洲人成网站免费播放|