package com.dy.common.util; 
 | 
  
 | 
@SuppressWarnings("unused") 
 | 
public class NumUtil { 
 | 
    /** 
 | 
     * 判断是否是正整数 
 | 
     * @param str String 
 | 
     * @return boolean 
 | 
     */ 
 | 
    public static boolean isPlusIntNumber(String str) { 
 | 
        if(str == null || str.trim().equals("")){ 
 | 
            return false ; 
 | 
        } 
 | 
        int n = 0 ; 
 | 
        String token = "9876543210"; 
 | 
        for (int i = n; i < str.length(); i++) { 
 | 
            if (!token.contains(str.substring(i, i + 1))) { 
 | 
                return false; 
 | 
            } 
 | 
        } 
 | 
        return true; 
 | 
    } 
 | 
    /** 
 | 
     * 判断是否是整数 
 | 
     *  
 | 
     * @param str String 
 | 
     * @return boolean 
 | 
     */ 
 | 
    public static boolean isIntNumber(String str) { 
 | 
        // 判断是否是数字 
 | 
        if(str == null || str.trim().equals("")) 
 | 
            return false ; 
 | 
         
 | 
        if(str.startsWith("-")){ 
 | 
            str = str.substring(1) ; 
 | 
        } 
 | 
        String token = "9876543210" ; 
 | 
        for (int i = 0; i < str.length(); i++) { 
 | 
            if (!token.contains(str.substring(i, i + 1))) { 
 | 
                return false; 
 | 
            } 
 | 
        } 
 | 
        return true; 
 | 
    } 
 | 
    /** 
 | 
     * 判断是否为16进制 
 | 
     *  
 | 
     * @param str String 
 | 
     * @return boolean 
 | 
     */ 
 | 
    public static boolean isHex(String str) { 
 | 
        if(str == null || str.trim().equals("")) 
 | 
            return false ; 
 | 
        if(str.length()%2 != 0) 
 | 
            return false ; 
 | 
         
 | 
        String token = "9876543210abcdefABCDEF" ; 
 | 
        for (int i = 0; i < str.length(); i++) { 
 | 
            if (!token.contains(str.substring(i, i + 1))) { 
 | 
                return false; 
 | 
            } 
 | 
        } 
 | 
        return true; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 判断是否是浮点数 
 | 
     * @param str String 
 | 
     * @return boolean 
 | 
     */ 
 | 
    public static boolean isDoubleNumber(String str) { 
 | 
        // 判断是否是数字 
 | 
        if(str == null || str.trim().equals("")){ 
 | 
            return false ; 
 | 
        } 
 | 
        String token = "9876543210.-" ; 
 | 
        for (int i = 0; i < str.length(); i++) { 
 | 
            if (!token.contains(str.substring(i, i + 1))) { 
 | 
                return false; 
 | 
            }  
 | 
        }  
 | 
        if(str.startsWith(".") || str.endsWith(".")){ 
 | 
            return false ; 
 | 
        }else{ 
 | 
            if(str.indexOf('.') != str.lastIndexOf('.')){ 
 | 
                return false ; 
 | 
            } 
 | 
        } 
 | 
        if(str.startsWith("-")){ 
 | 
            return str.indexOf('-') == str.lastIndexOf('-'); 
 | 
        } 
 | 
        return true; 
 | 
    } 
 | 
    /** 
 | 
     * 判断是否是正浮点数 
 | 
     * @param str String 
 | 
     * @return boolean 
 | 
     */ 
 | 
    public static boolean isPlusDoubleNumber(String str) { 
 | 
        // 判断是否是数字 
 | 
        if(str == null || str.trim().equals("")){ 
 | 
            return false ; 
 | 
        } 
 | 
        String token = "9876543210." ; 
 | 
        for (int i = 0; i < str.length(); i++) { 
 | 
            if (!token.contains(str.substring(i, i + 1))) { 
 | 
                return false; 
 | 
            }  
 | 
        }  
 | 
        if(str.startsWith(".") || str.endsWith(".")){ 
 | 
            return false ; 
 | 
        }else{ 
 | 
            if(str.indexOf('.') != str.lastIndexOf('.')){ 
 | 
                return false ; 
 | 
            } 
 | 
        } 
 | 
        if(str.startsWith("-")){ 
 | 
            return str.indexOf('-') == str.lastIndexOf('-'); 
 | 
        } 
 | 
        return true; 
 | 
    } 
 | 
     
 | 
    /** 
 | 
     * 浮点数四舍五入 
 | 
     * @param d 浮点数据 
 | 
     * @param scale 小数位数 
 | 
     * @return 四舍五入后的浮点数 
 | 
     */ 
 | 
    public static Double roundDouble(Double d , int scale){ 
 | 
        if(d == null){ 
 | 
            return null ; 
 | 
        } 
 | 
        return Double.valueOf(new java.text.DecimalFormat("##." + "0".repeat(Math.max(0, scale))).format(d)) ; 
 | 
    } 
 | 
     
 | 
    /** 
 | 
     * 浮点数四舍五入 
 | 
     * @param d 浮点数据 
 | 
     * @param scale 小数位数 
 | 
     * @return 四舍五入后的浮点数 
 | 
     */ 
 | 
    public static String roundDoubleStr(Double d , int scale){ 
 | 
        if(d == null){ 
 | 
            return null ; 
 | 
        } 
 | 
        return new java.text.DecimalFormat("#0." + "0".repeat(Math.max(0, scale))).format(d); 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 浮点数四舍五入 
 | 
     * @param d 浮点数据 
 | 
     * @param scale 小数位数 
 | 
     * @return 四舍五入后的浮点数 
 | 
     */ 
 | 
    public static Float roundFloat(Float d , int scale){ 
 | 
        if(d == null){ 
 | 
            return null ; 
 | 
        } 
 | 
        // StringBuilder temp = new StringBuilder("."); 
 | 
        // temp.append("0".repeat(Math.max(0, scale))); 
 | 
        // return Float.valueOf(new java.text.DecimalFormat(temp.toString()).format(d)) ; 
 | 
        return Float.valueOf(new java.text.DecimalFormat("." + "0".repeat(Math.max(0, scale))).format(d)) ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 浮点数四舍五入 
 | 
     * @param d 浮点数据 
 | 
     * @return 四舍五入后的浮点数 
 | 
     */ 
 | 
    public static Float roundFloat(Float d){ 
 | 
        if(d == null){ 
 | 
            return null ; 
 | 
        } 
 | 
        return Float.valueOf(new java.text.DecimalFormat(".00").format(d)) ; 
 | 
    } 
 | 
  
 | 
     
 | 
    /** 
 | 
     * 冒泡排序, 
 | 
     * @param values 要排序的数组 
 | 
     * @param up true 从小到大  false 从大到小 
 | 
     * @return 排序后的数组 
 | 
     */ 
 | 
    public static int[] sort(int[] values , boolean up){ 
 | 
        boolean changed; 
 | 
        int temp; 
 | 
        int end = 0 ; 
 | 
        for (int i = 0; i < values.length; ++i) { 
 | 
            changed = false ; 
 | 
            end++ ; 
 | 
            for (int j = 0; j < values.length - end ; ++j) { 
 | 
                if(up){ 
 | 
                    if (values[j] > values[j + 1]) { 
 | 
                        temp = values[j]; 
 | 
                        values[j] = values[j + 1]; 
 | 
                        values[j + 1] = temp; 
 | 
                        changed = true ; 
 | 
                    } 
 | 
                }else{ 
 | 
                    if (values[j] < values[j + 1]) { 
 | 
                        temp = values[j]; 
 | 
                        values[j] = values[j + 1]; 
 | 
                        values[j + 1] = temp; 
 | 
                        changed = true ; 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
            if(!changed){ 
 | 
                break ; 
 | 
            } 
 | 
        } 
 | 
        return values ; 
 | 
    } 
 | 
    /** 
 | 
     * 把数据前面的0去掉 
 | 
     *  
 | 
     * @param s String 
 | 
     * @return String 
 | 
     */ 
 | 
    public String clean0FromStrNum(String s) { 
 | 
        while (s.charAt(0) == '0' && s.length() > 1) { 
 | 
            s = s.substring(1); 
 | 
        } 
 | 
        return s; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 去掉小数点 
 | 
     *  
 | 
     * @param value String 
 | 
     * @return String 
 | 
     */ 
 | 
    public String cleanDotNumber(String value) { 
 | 
        int dot = value.indexOf('.'); 
 | 
        if (dot < 0) { 
 | 
            return value; 
 | 
        } 
 | 
        if (value.length() - dot - 1 > 2) { 
 | 
            value = value.substring(0, dot); 
 | 
        } 
 | 
        return value; 
 | 
    } 
 | 
  
 | 
} 
 |