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

        
        

    }
    主站蜘蛛池模板: 久久久精品免费视频| 黄色片在线免费观看| 在线免费观看一级毛片| 国产亚洲老熟女视频| 亚洲中文字幕一二三四区苍井空 | 亚洲人6666成人观看| 成年网站免费入口在线观看 | 99久久婷婷国产综合亚洲| 国产美女视频免费观看的网站| 97热久久免费频精品99| 久久亚洲国产精品五月天婷| 亚洲综合色婷婷在线观看| a毛片在线免费观看| 国产精品无码免费视频二三区| 亚洲AV第一页国产精品| 黄色免费在线观看网址| 国产又黄又爽又猛免费app| 国产V亚洲V天堂A无码| 亚洲6080yy久久无码产自国产 | 亚洲av无码不卡| 美女无遮挡免费视频网站| 国产免费的野战视频| 国产精品亚洲A∨天堂不卡| 亚洲Av永久无码精品黑人| 18未年禁止免费观看| 亚洲色爱图小说专区| 在线观看亚洲精品专区| 五月亭亭免费高清在线| 久久夜色精品国产亚洲| 美女视频黄频a免费| 在线观看AV片永久免费| 久久久久久亚洲精品成人| 成人无码精品1区2区3区免费看| 好爽好紧好大的免费视频国产| 亚洲人成网网址在线看| 久久香蕉国产线看免费| 亚洲人成色777777在线观看| 十八禁的黄污污免费网站| 午夜免费福利在线| 亚洲自国产拍揄拍| 最近2022中文字幕免费视频|