NumbericUtil工具类(实现数字及数字格式化的基本功能:精确的加减乘除法、金额数字转 成中文等。)

package com.common;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;


public class NumericUtil {
    // 默认除法运算精度
    private static final int DEF_DIV_SCALE = 10;
    
  //字母随机数组,去除了i,o等歧义字母
    final static String[] letters = {"a","b","c","d","e","f","g","h","j","k","m","n","p","q","r","s","t","u","v","w","x","y"};
    //数字随机数组,去除了0和1等歧义数字
    final static String[] numbers = {"2","3","4","5","6","7","8","9"};
    
    /**
     * 构造函数.
     */
    protected NumericUtil() {
        
    }
    
    /**
     * 提供精确的加法运算。
     * 
     * @param v1
     *            被加数
     * @param v2
     *            加数
     * @return 两个参数的和
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static double add(final double v1, final double v2) {
        final BigDecimal b1 = new BigDecimal(Double.toString(v1));
        final BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.add(b2).doubleValue();
    }
    
    /**
     * 提供精确的减法运算。
     * 
     * @param v1
     *            被减数
     * @param v2
     *            减数
     * @return 两个参数的差
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static double subtract(final double v1, final double v2) {
        final BigDecimal b1 = new BigDecimal(Double.toString(v1));
        final BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.subtract(b2).doubleValue();
    }
    
    /**
     * 提供精确的乘法运算。
     * 
     * @param v1
     *            被乘数
     * @param v2
     *            乘数
     * @return 两个参数的积
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static double multiply(final double v1, final double v2) {
        final BigDecimal b1 = new BigDecimal(Double.toString(v1));
        final BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.multiply(b2).doubleValue();
    }
    
    /**
     * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 小数点以后10位,以后的数字四舍五入。
     * 
     * @param v1
     *            被除数
     * @param v2
     *            除数
     * @return double
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static double divide(final double v1, final double v2) {
        return NumericUtil.divide(v1, v2, NumericUtil.DEF_DIV_SCALE);
    }
    
    /**
     * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。
     * 
     * @param v1
     *            被除数
     * @param v2
     *            除数
     * @param scale
     *            表示表示需要精确到小数点以后几位。
     * @return double 两个参数的商
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static double divide(final double v1, final double v2, final int scale) {
        if (scale < 0) {
            throw new IllegalArgumentException("The scale must be a positive integer or zero");
        }
        final BigDecimal b1 = new BigDecimal(Double.toString(v1));
        final BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
    }
    
    /**
     * 提供精确的小数位四舍五入处理。
     * 
     * @param v
     *            需要四舍五入的数字
     * @param scale
     *            小数点后保留几位
     * @return 四舍五入后的结果
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static double round(final double v, final int scale) {
        if (scale < 0) {
            throw new IllegalArgumentException("The scale must be a positive integer or zero");
        }
        final BigDecimal b = new BigDecimal(Double.toString(v));
        final BigDecimal one = new BigDecimal("1");
        return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
    }
    
    /**
     * 将数字金额(BigDecimal类型)转换为中文金额.
     * 
     * @param bigdMoneyNumber
     *            转换前的数字金额
     * @return String 中文金额
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static String lowerToUpperOfMoney(final BigDecimal bigdMoneyNumber) {
        final String[] straChineseUnit = new String[] {"分", "角", "圆", "拾", "佰", "仟", "万", "拾", "佰",
                "仟", "亿", "拾", "佰", "仟" };
        // 中文数字字符数组
        final String[] straChineseNumber = new String[] {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒",
                "捌", "玖" };
        String strChineseCurrency = "";
        // 零数位标记
        boolean bZero = true;
        // 中文金额单位下标
        int chineseUnitIndex = 0;
        
        try {
            if (bigdMoneyNumber.intValue() == 0) {
                return "零圆整";
            }
            // 处理小数部分,四舍五入
            double doubMoneyNumber = Math.round(bigdMoneyNumber.doubleValue() * 100);
            // 是否负数
            final boolean bNegative = doubMoneyNumber < 0;
            // 取绝对值
            doubMoneyNumber = Math.abs(doubMoneyNumber);
            // 循环处理转换操作
            while (doubMoneyNumber > 0) {
                // 整的处理(无小数位)
                if (chineseUnitIndex == 2 && strChineseCurrency.length() == 0) {
                    strChineseCurrency = strChineseCurrency + "整";
                }
                // 非零数位的处理
                if (doubMoneyNumber % 10 > 0) {
                    strChineseCurrency = straChineseNumber[(int) doubMoneyNumber % 10]
                        + straChineseUnit[chineseUnitIndex] + strChineseCurrency;
                    bZero = false;
                } else { // 零数位的处理
                    // 元的处理(个位)
                    if (chineseUnitIndex == 2) {
                        // 段中有数字
                        if (doubMoneyNumber > 0) {
                            strChineseCurrency = straChineseUnit[chineseUnitIndex]
                                + strChineseCurrency;
                            bZero = true;
                        }
                    } else if (chineseUnitIndex == 6 || chineseUnitIndex == 10) { // 万、亿数位的处理
                        // 段中有数字
                        if (doubMoneyNumber % 1000 > 0) {
                            strChineseCurrency = straChineseUnit[chineseUnitIndex]
                                + strChineseCurrency;
                        }
                    }
                    // 前一数位非零的处理
                    if (!bZero) {
                        strChineseCurrency = straChineseNumber[0] + strChineseCurrency;
                    }
                    bZero = true;
                }
                doubMoneyNumber = Math.floor(doubMoneyNumber / 10);
                chineseUnitIndex++;
            }
            // 负数的处理
            if (bNegative) {
                strChineseCurrency = "负" + strChineseCurrency;
            }
        } catch (final Exception e) {
            return "";
        }
        return strChineseCurrency;
    }
    
    /**
     * 将小写金额(double类型)转化为人民币大写格式.
     * 
     * @param je
     *            转换前的小写数字金额
     * @return String 中文金额
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static String lowerToUpperOfMoney(final double je) {
        String money = ""; // 转换后的字符串
        final String num = "零壹贰叁肆伍陆柒捌玖";
        final String[] unit = {"元", "拾", "佰", "仟", "万", "拾万", "佰万", "仟万", "亿", "拾亿", "佰亿", "仟亿" };
        String s = String.valueOf(je); // 将金额转换为字符串
        final int a = s.indexOf("+"); // 判断s是否包含'+',如1.67E+4
        final int e = s.indexOf("E"); // 判断s是否包含'E',如1.67E+4
        if (je == 0.00) {
            return money;
        }
        // 如果包含'E'(该金额是以科学记数法表示,则转换成普通表示法)
        if (e != -1) {
            int index = 0; // 指数值
            if (a == -1) {
                index = Integer.parseInt(s.substring(e + 1)); // 取得指数值
            } else {
                index = Integer.parseInt(s.substring(a + 1)); // 取得指数值
            }
            final String sub1 = s.substring(0, e); // 取得尾数值
            final int dot = sub1.indexOf("."); // 尾数的小数点位置
            // 如果不含有小数点,则在后面补index个'0'
            if (dot == -1) {
                for (int i = 1; i <= index; i++) {
                    s = sub1 + "0";
                }
            } else { // 如果含有小数点,则向后移动小数点index位
                final String sub11 = sub1.substring(0, dot); // 小数点前面的字串
                String sub12 = sub1.substring(dot + 1); // 小数点后面的字串
                if (index >= sub12.length()) {
                    final int j = index - sub12.length();
                    for (int i = 1; i <= j; i++) {
                        sub12 = sub12 + "0";
                    }
                } else {
                    sub12 = sub12.substring(0, index) + "." + sub12.substring(index);
                }
                s = sub11 + sub12;
            }
        }
        final int sdot = s.indexOf("."); // s中小数点的位置
        String beforeDot = ""; // 小数点前面的字串
        String afterDot = ""; // 小数点后面的字串
        // 如果包含小数点
        if (sdot != -1) {
            beforeDot = s.substring(0, sdot);
            afterDot = s.substring(sdot + 1);
        } else { // 不包含小数点
            beforeDot = s;
        }
        final int bl = beforeDot.length();
        boolean zero = false; // 数字是否为零
        int z = 0; // '0'的个数
        
        // 逐位取数字
        for (int j = 0, i = bl - 1; j <= bl - 1; j++, i--) {
            final int number = Integer.parseInt(String.valueOf(beforeDot.charAt(j)));
            if (number == 0) {
                zero = true;
                z++;
            } else {
                zero = false;
                z = 0;
            }
            if (zero && z == 1) {
                money += "零";
            } else if (zero) {
            } else if (!zero) {
                money += num.substring(number, number + 1) + unit[i];
            }
        }
        
        // 删去多余的'万'和'亿'
        for (int i = 1; i <= 2; i++) {
            String ss = "";
            if (i == 1) {
                ss = "万";
            } else {
                ss = "亿";
            }
            final int last = money.lastIndexOf(ss);
            if (last != -1) {
                String moneySub1 = money.substring(0, last);
                final String moneySub2 = money.substring(last, money.length());
                int last2 = moneySub1.indexOf(ss);
                while (last2 != -1) {
                    moneySub1 = moneySub1.substring(0, last2)
                        + moneySub1.substring(last2 + 1, moneySub1.length());
                    last2 = moneySub1.indexOf(ss);
                }
                money = moneySub1 + moneySub2;
            }
        }
        
        // money中是否包含'元'
        final int yuan = money.indexOf("元");
        // 如果不包含'元'
        if (yuan == -1) {
            final int zi = money.lastIndexOf("零");
            // 如果最后一位字符为'零',则删除它
            if (zi == money.length() - 1) {
                money = money.substring(0, money.length() - 1) + "元"; // 在money最后加上'元'
            }
        }
        
        // 如果小数点后面的字串不为空,则处理'角','分'
        if (!afterDot.equals("")) {
            int al = afterDot.length();
            if (al > 2) { // 如果字串长度大于2,则截断
                afterDot = afterDot.substring(0, 2);
                al = afterDot.length();
            }
            // 如果字符串不为'0'或'00',则处理,否则不进行处理
            if (!afterDot.equals("0") && !afterDot.equals("00")) {
                // 逐位取得字符
                for (int i = 0; i < al; i++) {
                    final int number = Integer.parseInt(String.valueOf(afterDot.charAt(i)));
                    if (number != 0 && i == 0) {
                        money += num.substring(number, number + 1) + "角";
                    } else if (number != 0 && i == 1) {
                        money += num.substring(number, number + 1) + "分";
                    } else if (number == 0 && i == 0) {
                        money += "零";
                    }
                }
            }
        }
        // 如果不包含'角','分'则在最后加上'整'字
        if (money.indexOf("角") == -1 && money.indexOf("分") == -1) {
            money += "整";
        }
        return money;
    }
    
    /**
     * 将double数转化为指定位数的字符串.
     * 
     * @param num
     *            待转换的float数
     * @param digits
     *            小数点后的位数
     * @return String 指定小数位数的字符串
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static String getNumberFormat(final float num, final int digits) {
        String thenum;
        final NumberFormat nf = NumberFormat.getInstance();
        nf.setMaximumFractionDigits(digits);
        nf.setMinimumFractionDigits(digits);
        thenum = nf.format(num).toString();
        return thenum;
    }
    
    /**
     * 将double数转化为指定位数的字符串.<br>
     * 例如: NumericUtil.getNumberFormat(123456.12345,3)
     * 的结果为123,456.123,注意小数点最后一位四舍五入
     * 
     * @param num
     *            待转换的double数
     * @param digits
     *            小数点后的位数
     * @return String 指定小数位数的字符串
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static String getNumberFormat(final double num, final int digits) {
        String thenum;
        final NumberFormat nf = NumberFormat.getInstance();
        nf.setMaximumFractionDigits(digits);
        nf.setMinimumFractionDigits(digits);
        thenum = nf.format(num).toString();
        return thenum;
    }
    
    /**
     * 将BigDecimal数转化为指定位数的字符串.<br>
     * 例如: NumericUtil.getNumberFormat(new BigDecimal(123456.12345),3)
     * 的结果为123,456.123,注意小数点最后一位四舍五入
     * 
     * @param num
     *            待转换的BigDecimal数
     * @param digits
     *            小数点后的位数
     * @return String 指定小数位数的字符串
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static String getNumberFormat(BigDecimal num, final int digits) {
        String thenum = "";
        if (num == null) {
            num = new BigDecimal(0);
        }
        try {
            final NumberFormat nf = NumberFormat.getInstance();
            nf.setMaximumFractionDigits(digits);
            nf.setMinimumFractionDigits(digits);
            thenum = nf.format(num).toString();
        } catch (final NumberFormatException nfex) {
            throw new NumberFormatException(nfex.toString());
        }
        return thenum;
    }
    
    /**
     * 格式字符串为double输出.
     * 
     * @param lpNumberFormat
     *            待格式化的字符串
     * @return double double数值
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static double getNumberFormatStrToDouble(final String lpNumberFormat) {
        double lpReturnNumber = 0;
        final NumberFormat nf = NumberFormat.getInstance();
        try {
            final Number lpResultNumber = nf.parse(lpNumberFormat);
            lpReturnNumber = lpResultNumber.doubleValue();
        } catch (final ParseException pe) {
        }
        return lpReturnNumber;
    }
    
    /**
     * 格式字符串为float输出.
     * 
     * @param lpNumberFormat
     *            待格式化的字符串
     * @return float float数值
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static float getNumberFormatStrToFloat(final String lpNumberFormat) {
        float lpReturnNumber = 0;
        final NumberFormat nf = NumberFormat.getInstance();
        try {
            final Number lpResultNumber = nf.parse(lpNumberFormat);
            lpReturnNumber = lpResultNumber.floatValue();
        } catch (final ParseException pe) {
        }
        return lpReturnNumber;
    }
    
    /**
     * 将字符串转化为BigDecimal类型.
     * 
     * @param str
     *            待转换的字符串
     * @return BigDecimal 转换后的BigDecimal,如果字符串为null, 那么BigDecimal为new
     *         BigDecimal("0");
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static BigDecimal toBigDecimal(String str) {
        BigDecimal lpReturnValue;
        try {
            if (str == null) {
                str = "0";
            }
            lpReturnValue = new BigDecimal(str);
        } catch (final NumberFormatException nfe) {
            lpReturnValue = new BigDecimal(0);
        }
        return lpReturnValue;
    }
    
    /**
     * 将字符串转化为double类型 Converts a string to double. If fails is not throwing a
     * NumberFormatException, instead return 0.
     * 
     * @param str
     *            待转换的字符串
     * @return double数据
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static double toDouble(String str) {
        double lpResult = 0;
        
        if (str == null) {
            str = "";
        } else {
            str = str.trim();
        }
        try {
            lpResult = Double.parseDouble(str);
        } catch (final NumberFormatException nfe) {
        }
        return lpResult;
    }
    
    /**
     * 将字符串转化为short类型 Converts a string to short. If fails is not throwing a
     * NumberFormatException, instead return 0.
     * 
     * @param str
     *            待转换的字符串
     * @return int数据
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static short toShort(String str) {
        short lpResult = 0;
        if (str == null) {
            str = "";
        } else {
            str = str.trim();
        }
        try {
            lpResult = Short.parseShort(str);
        } catch (final NumberFormatException nfe) {
        }
        return lpResult;
    }
    
    /**
     * 将字符串转化为int类型 Converts a string to integer. If fails is not throwing a
     * NumberFormatException, instead return 0.
     * 
     * @param str
     *            待转换的字符串
     * @return int 数据
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static int toInt(String str) {
        int lpResult = 0;
        if (str == null) {
            str = "";
        } else {
            str = str.trim();
        }
        try {
            lpResult = Integer.parseInt(str);
        } catch (final NumberFormatException nfe) {
        }
        return lpResult;
    }
    
    /**
     * 将字符串转化为float类型 Converts a string to float. If fails is not throwing a
     * NumberFormatException, instead return 0.
     * 
     * @param str
     *            待转换的字符串
     * @return float 数据
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static float toFloat(String str) {
        float lpResult = 0;
        if (str == null) {
            str = "";
        } else {
            str = str.trim();
        }
        try {
            lpResult = Float.parseFloat(str);
        } catch (final NumberFormatException nfe) {
        }
        return lpResult;
    }
    
    /**
     * 将字符串转化为long类型 Converts a string to long. If fails is not throwing a
     * NumberFormatException, instead return 0.
     * 
     * @param str
     *            待转换的字符串
     * @return long 数据
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static long toLong(String str) {
        long lpResult = 0;
        if (str == null) {
            str = "";
        } else {
            str = str.trim();
        }
        try {
            lpResult = Long.parseLong(str);
        } catch (final NumberFormatException nfe) {
        }
        return lpResult;
    }
    
    /**
     * 当变量为空时返回零.
     * 
     * @param obj
     *            Object
     * @return int
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static int nullToZero(final Object obj) {
        int result = 0;
        if (obj == null || obj.toString().equals("")) {
            result = 0;
        } else {
            result = new Integer(obj.toString()).intValue();
        }
        
        return result;
        
    }
    
    /**
     * 当变量为空时返回零.
     * 
     * @param obj
     *            Object
     * @return BigDecimal
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static BigDecimal nullToBigDecimalZero(final Object obj) {
        BigDecimal result = new BigDecimal("0");
        if (obj == null || obj.toString().equals("")) {
            result = new BigDecimal("0");
        } else {
            result = new BigDecimal(obj.toString());
        }
        
        return result;
        
    }
    
    /**
     * @param obj
     *            Object
     * @return String
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static String nullToStringZero(final Object obj) {
        BigDecimal result = new BigDecimal("0");
        if (obj == null || obj.toString().equals("")) {
            result = new BigDecimal("0");
        } else {
            result = new BigDecimal(obj.toString());
        }
        
        return result.toString();
        
    }
    
    /**
     * @param obj
     *            Object
     * @return Long
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static Long nullToLongZero(final Object obj) {
        
        Long result = new Long(0);
        
        try {
            if (obj == null || obj.toString().equals("")) {
                result = new Long(0);
            } else {
                result = new Long(obj.toString());
            }
        } catch (final Exception ex) {
            result = new Long(0);
        }
        
        return result;
    }
    
    public static Long nullToLongZero(final Object obj, final Long rpt) {
        
        Long result = nullToLongZero(obj);
        if(result == 0L){
            result = rpt;
        }
        return result;
    }
    
    public static Integer nullToIntegerZero(final Object obj) {
        Integer result = new Integer(0);
        
        try {
            if (obj == null || obj.toString().equals("")) {
                result = new Integer(0);
            } else {
                result = new Integer(obj.toString());
            }
        } catch (final Exception ex) {
            result = new Integer(0);
        }
        
        return result;
    }
    
    /**
     * @param obj
     *            Double
     * @return Double
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static Double nullToDoubleZero(final Double obj) {
        Double result = new Double(0);
        if (obj == null) {
            result = new Double(0);
        } else {
            final DecimalFormat format = new DecimalFormat("#.000");
            result = new Double(format.format(obj));
        }
        return result;
        
    }
    
    /**
     * @param obj
     *            Object
     * @return Double
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static Double nullToDoubleZero(final Object obj) {
        Double result = new Double(0);
        try {
            if (obj == null) {
                result = new Double(0);
            } else {
                result = new Double(obj.toString());
            }
        } catch (final Exception e) {
        }
        return result;
        
    }
    
    /**
     * 将对像转换成Float类型,当对像为空时返回0
     * .
     * 
     * @param obj
     * @return
     * @author lovem
     * 2018-06-17 lovem
     */
    public static Float nullToFloatZero(final Object obj) {
        Float result = new Float(0);
        try {
            if(obj != null){
                result = Float.valueOf(obj.toString());
            }
        } catch (final Exception e) {
        }
        return result;
        
    }
    
    /**
     * 方法功能:
     * 转换大Long为int .
     * @param lon 输入大Long
     * @return int 返回int
     * @author: lovem
     * @修改记录: 
     * ==============================================================<br>
     * 日期:2018-06-17 lovem 创建方法,并实现其功能
     * ==============================================================<br>
     */
    public static int toInt(Long lon) {
        int lpResult = 0;
        try {
            if (lon == null) {
                lpResult = 0;
            } else {
                lpResult = lon.intValue();
            }
        } catch (final NumberFormatException nfe) {
        }
        return lpResult;
    }
    
    /**
     * 根据密码长度和是否包含字母参数来生成随机码.
     * 
     * @param length 长度
     * @param hasLetter 是否包含字母
     * @return 随机密码
     * @author lovem
     * 2018-06-17 lovem 
     */
    public static String getRandomCode(int length, boolean hasLetter) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < length; i++) {
            double random = Math.random();
            if (hasLetter && random < 0.5 ) {
                Double d = new Double(random * letters.length);
                sb.append(letters[d.intValue()]);
            } else {
                Double d = new Double(random * numbers.length);
                sb.append(numbers[d.intValue()]);
            }
        }
        return sb.toString();
    }
    /**
     * @param args
     *            String
     * @author: lovem
     * @修改记录: ==============================================================<br>
     *        日期:2018-06-17 lovem 创建方法,并实现其功能
     *        ==============================================================<br>
     */
    /*
     * public static void main(String args[]) { NumericUtil a = new
     * NumericUtil(); BigDecimal big = new BigDecimal(123456.12345); }
     */

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值