<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 閱讀(93) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲人成毛片线播放| 免费观看无遮挡www的小视频| 最近高清中文字幕无吗免费看| 亚洲精品乱码久久久久久| 无码AV动漫精品一区二区免费| 香蕉视频在线观看免费国产婷婷| 亚洲国产电影在线观看| 成人免费看吃奶视频网站| ww亚洲ww在线观看国产| 中文字幕人成无码免费视频 | 亚洲日本香蕉视频| 2015日韩永久免费视频播放| 亚洲精品在线不卡| 亚洲电影在线免费观看| 污污视频免费观看网站| 亚洲自偷自偷偷色无码中文| 国产日韩一区二区三免费高清| 亚洲国产精品特色大片观看完整版| 福利免费在线观看| 亚洲AV永久无码精品水牛影视| 无码精品人妻一区二区三区免费看 | 国产亚洲精品成人AA片新蒲金 | 国产av无码专区亚洲av桃花庵| 免费高清资源黄网站在线观看| 三年片在线观看免费| 亚洲AV永久无码天堂影院| 在线免费中文字幕| 亚洲人精品亚洲人成在线| 国产精品久久免费视频| 一级黄色免费网站| 久久久久亚洲av无码专区蜜芽| 日本片免费观看一区二区| 久久一区二区三区免费| 无码欧精品亚洲日韩一区| 宅男666在线永久免费观看 | 99久久久精品免费观看国产| 一本久久免费视频| 亚洲综合一区无码精品| 伊人久久亚洲综合影院| 任你躁在线精品免费| 老司机福利在线免费观看|