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

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

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

    posts - 19, comments - 53, trackbacks - 0, articles - 283
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    import java.math.BigDecimal;
    public class Test {
        
    public static void main(String args[]) {
            
    try {
                BigDecimal d 
    = new BigDecimal(40).divide(new BigDecimal(40));
            }
     catch (ArithmeticException e) {
                String msg 
    = e.getMessage();
                
    if (msg.indexOf("Non-terminating"> -1{
                    System.out.println(
    "Non-terminating");//無(wú)窮
                }

            }

        }

    }
    在找這個(gè)用法的同時(shí),查到BigDecimal的相關(guān)用法,據(jù)說(shuō)是用來(lái)商業(yè)精確運(yùn)算的,先摘下來(lái),說(shuō)不定某天能用到
    package com.Gavin.tools;

    import java.math.BigDecimal;

    public class Arith {

    /**    
          第一種:BigDecimal(double val)
        Translates a double into a BigDecimal. 

        第二種:BigDecimal(String val)
        Translates the String repre sentation of a BigDecimal into a BigDecimal. 

        使用BigDecimal要用String來(lái)夠造,要做一個(gè)加法運(yùn)算,需要先將兩個(gè)浮點(diǎn)數(shù)轉(zhuǎn)為String,然后夠造成BigDecimal,在其中一個(gè)上調(diào)用add方法,傳入另一個(gè)作為參數(shù),然后把運(yùn)算的結(jié)果(BigDecimal)再轉(zhuǎn)換為浮點(diǎn)數(shù)。

        public static double add(double v1,double v2)
        public static double sub(double v1,double v2)
        public static double mul(double v1,double v2)
        public static double div(double v1,double v2)
        public static double div(double v1,double v2,int scale)
        public static double round(double v,int scale)
    */


        
    /** 
         * 由于Java的簡(jiǎn)單類型不能夠精確的對(duì)浮點(diǎn)數(shù)進(jìn)行運(yùn)算,這個(gè)工具類提供精 
         * 確的浮點(diǎn)數(shù)運(yùn)算,包括加減乘除和四舍五入。 
         
    */

        
    //默認(rèn)除法運(yùn)算精度 
        private static final int DEF_DIV_SCALE = 10;

        
    //這個(gè)類不能實(shí)例化 
        private Arith() {
        }


        
    /** 
         * 提供精確的加法運(yùn)算。 
         * 
    @param v1 被加數(shù) 
         * 
    @param v2 加數(shù) 
         * 
    @return 兩個(gè)參數(shù)的和 
         
    */

        
    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();
        }


        
    /** 
         * 提供精確的減法運(yùn)算。 
         * 
    @param v1 被減數(shù) 
         * 
    @param v2 減數(shù) 
         * 
    @return 兩個(gè)參數(shù)的差 
         
    */

        
    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();
        }


        
    /** 
         * 提供精確的乘法運(yùn)算。 
         * 
    @param v1 被乘數(shù) 
         * 
    @param v2 乘數(shù) 
         * 
    @return 兩個(gè)參數(shù)的積 
         
    */

        
    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();
        }


        
    /** 
         * 提供(相對(duì))精確的除法運(yùn)算,當(dāng)發(fā)生除不盡的情況時(shí),精確到 
         * 小數(shù)點(diǎn)以后10位,以后的數(shù)字四舍五入。 
         * 
    @param v1 被除數(shù) 
         * 
    @param v2 除數(shù) 
         * 
    @return 兩個(gè)參數(shù)的商 
         
    */

        
    public static double div(double v1, double v2) {
            
    return div(v1, v2, DEF_DIV_SCALE);
        }


        
    /** 
         * 提供(相對(duì))精確的除法運(yùn)算。當(dāng)發(fā)生除不盡的情況時(shí),由scale參數(shù)指 
         * 定精度,以后的數(shù)字四舍五入。 
         * 
    @param v1 被除數(shù) 
         * 
    @param v2 除數(shù) 
         * 
    @param scale 表示表示需要精確到小數(shù)點(diǎn)以后幾位。 
         * 
    @return 兩個(gè)參數(shù)的商 
         
    */

        
    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();
        }


        
    /** 
         * 提供精確的小數(shù)位四舍五入處理。 
         * 
    @param v 需要四舍五入的數(shù)字 
         * 
    @param scale 小數(shù)點(diǎn)后保留幾位 
         * 
    @return 四舍五入后的結(jié)果 
         
    */

        
    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();
        }


        
    /** 
         * 提供精確的類型轉(zhuǎn)換(Float) 
         * 
    @param v 需要被轉(zhuǎn)換的數(shù)字 
         * 
    @return 返回轉(zhuǎn)換結(jié)果 
         
    */

        
    public static float convertsToFloat(double v) {
            BigDecimal b 
    = new BigDecimal(v);
            
    return b.floatValue();
        }


        
    /** 
         * 提供精確的類型轉(zhuǎn)換(Int)不進(jìn)行四舍五入,直接截取
         * 
    @param v 需要被轉(zhuǎn)換的數(shù)字 
         * 
    @return 返回轉(zhuǎn)換結(jié)果 
         
    */

        
    public static int convertsToInt(double v) {
            BigDecimal b 
    = new BigDecimal(v);
            
    return b.intValue();
        }


        
    /** 
         * 提供精確的類型轉(zhuǎn)換(Long) 
         * 
    @param v 需要被轉(zhuǎn)換的數(shù)字 
         * 
    @return 返回轉(zhuǎn)換結(jié)果 
         
    */

        
    public static long convertsToLong(double v) {
            BigDecimal b 
    = new BigDecimal(v);
            
    return b.longValue();
        }


        
    /** 
         * 返回兩個(gè)數(shù)中大的一個(gè)值 
         * 
    @param v1 需要被對(duì)比的第一個(gè)數(shù) 
         * 
    @param v2 需要被對(duì)比的第二個(gè)數(shù) 
         * 
    @return 返回兩個(gè)數(shù)中大的一個(gè)值 
         
    */

        
    public static double returnMax(double v1, double v2) {
            BigDecimal b1 
    = new BigDecimal(v1);
            BigDecimal b2 
    = new BigDecimal(v2);
            
    return b1.max(b2).doubleValue();
        }


        
    /** 
         * 返回兩個(gè)數(shù)中小的一個(gè)值 
         * 
    @param v1 需要被對(duì)比的第一個(gè)數(shù) 
         * 
    @param v2 需要被對(duì)比的第二個(gè)數(shù) 
         * 
    @return 返回兩個(gè)數(shù)中小的一個(gè)值 
         
    */

        
    public static double returnMin(double v1, double v2) {
            BigDecimal b1 
    = new BigDecimal(v1);
            BigDecimal b2 
    = new BigDecimal(v2);
            
    return b1.min(b2).doubleValue();
        }


        
    /** 
         * 精確對(duì)比兩個(gè)數(shù)字 
         * 
    @param v1 需要被對(duì)比的第一個(gè)數(shù) 
         * 
    @param v2 需要被對(duì)比的第二個(gè)數(shù) 
         * 
    @return 如果兩個(gè)數(shù)一樣則返回0,如果第一個(gè)數(shù)比第二個(gè)數(shù)大則返回1,反之返回-1 
         
    */

        
    public static int compareTo(double v1, double v2) {
            BigDecimal b1 
    = new BigDecimal(v1);
            BigDecimal b2 
    = new BigDecimal(v2);
            
    return b1.compareTo(b2);
        }

        
        

    }
    主站蜘蛛池模板: 亚洲一区二区三区在线播放| 精品免费国产一区二区三区 | 大学生一级毛片免费看| 久久av无码专区亚洲av桃花岛| 暖暖免费日本在线中文| 亚洲AV无码国产精品色午友在线 | 羞羞漫画登录页面免费| 国产成人无码免费视频97| 国产成人精品日本亚洲语音| 免费va人成视频网站全| 波多野结衣在线免费观看| 国产一级大片免费看| 老司机免费午夜精品视频| 久久亚洲色一区二区三区| 在线成人精品国产区免费| 精品亚洲成a人片在线观看少妇| 1000部拍拍拍18勿入免费视频软件 | 国产精品久久久久久亚洲影视| 亚洲国产V高清在线观看| 中文字幕高清免费不卡视频| 亚洲AV日韩AV天堂一区二区三区| 久久久久久精品免费免费自慰| 亚洲人成伊人成综合网久久| 日韩免费三级电影| 中文字幕在线视频免费观看| 亚洲第一页在线播放| 国产高清在线精品免费软件| 特级毛片爽www免费版| 亚洲电影中文字幕| 成人啪精品视频免费网站| 亚洲精品中文字幕无乱码| 成人五级毛片免费播放| a在线视频免费观看在线视频三区| 韩国日本好看电影免费看| 在线播放国产不卡免费视频| 亚洲av网址在线观看| 日本免费福利视频| 嫩草成人永久免费观看| 精品国产亚洲一区二区三区在线观看 | 免费无码av片在线观看| 亚洲综合无码无在线观看|