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

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


    網站導航:
     
    主站蜘蛛池模板: 国产h视频在线观看网站免费| 免费播放国产性色生活片| 国产日韩AV免费无码一区二区 | a视频在线观看免费| 亚洲国产一成久久精品国产成人综合| 亚洲欧美第一成人网站7777| 免费看国产精品3a黄的视频| 亚洲 暴爽 AV人人爽日日碰| 处破痛哭A√18成年片免费| 亚洲国产精品精华液| 国产v片免费播放| 免费看一级一级人妻片| 久久精品国产亚洲Aⅴ香蕉| selaoban在线视频免费精品| 亚洲线精品一区二区三区| 日韩成人免费视频| 亚洲精品自拍视频| 毛片免费全部免费观看| 亚洲第一综合天堂另类专| 国产大片线上免费看| 黄色视频在线免费观看| 亚洲av日韩av无码黑人| 免费精品国偷自产在线在线| 2020天堂在线亚洲精品专区| 日韩视频免费在线| 青娱乐在线免费观看视频| 久久精品国产亚洲麻豆| 免费观看无遮挡www的小视频| 亚洲国产av玩弄放荡人妇| 亚洲成?v人片天堂网无码| 国产一区二区三区免费| 亚洲H在线播放在线观看H| 四虎影视在线永久免费看黄| APP在线免费观看视频| 亚洲a级在线观看| 亚洲真人日本在线| 国产国产人免费视频成69堂| 高潮毛片无遮挡高清免费 | 亚洲第一网站免费视频| 国产福利免费观看| 嫩草成人永久免费观看|