import java.math.BigDecimal;import java.text.DecimalFormat;/** * ClassName: NumUtil * Description: * date: 2018/8/31 下午4:18 * * @author chengluchao * @since JDK 1.8 */public abstract class NumUtil { static final String FORMAT2STR = "0.00"; static final String FORMAT8STR = "0.00000000"; static final DecimalFormat df2 = new DecimalFormat(FORMAT2STR); static final DecimalFormat df8 = new DecimalFormat(FORMAT8STR); /** * 格式化小数 * * @param num * @return */ public static BigDecimal parseDouble(String num) { if (StrUtils.isEmpty(num)) return new BigDecimal(0.0); return new BigDecimal(num); } /** * 格式化小数,可以为空 * * @param num * @return */ public static BigDecimal parseDoubleHaveNull(String num) { if (StrUtils.isEmpty(num)) return null; return new BigDecimal(num); } /** * 格式化小数-double * * @param num * @return */ public static double parseDoubleTrue(String num) { if (StrUtils.isEmpty(num)) return 0.0; return Double.parseDouble(num); } /** * 转小数,保留2位 * * @param num * @return */ public static BigDecimal StrTo2Double(String num) { if (StrUtils.isEmpty(num)) num = FORMAT2STR; return new BigDecimal(num).setScale(2, java.math.BigDecimal.ROUND_HALF_UP); } /** * 转小数,保留3位 * * @param num * @return */ public static BigDecimal StrTo3Double(String num) { if (StrUtils.isEmpty(num)) num = "0.000"; return new BigDecimal(num).setScale(3, java.math.BigDecimal.ROUND_HALF_UP); } /** * 转小数,保留8位 * * @param num * @return */ public static BigDecimal StrTo8Double(String num) { if (StrUtils.isEmpty(num)) num = FORMAT8STR; return new BigDecimal(num).setScale(8, java.math.BigDecimal.ROUND_HALF_UP); } /** * 格式化数字 * * @param num * @return */ public static int parseInt(String num) { if (StrUtils.isEmpty(num)) return 0; return Integer.parseInt(num); } /** * 格式化8位小数 * * @param num * @return */ @Deprecated public static String format8(Double num) { if (num == null) num = 0.00000000; return df8.format(num); } /** * 格式化8位小数 * * @param num * @return */ @Deprecated public static String format8Double(String num) { if (num == null) return FORMAT8STR; return df8.format(Double.parseDouble(num)); } /** * 格式化8位小数 * * @param num * @return */ public static String format8(String num) { if (StrUtils.isEmpty(num)) return FORMAT8STR; BigDecimal bigDecimal = new BigDecimal(num); /* if ((0 > bigDecimal.compareTo(new BigDecimal("1"))) && (0 < bigDecimal.compareTo(new BigDecimal("-1")))){ return format8Double(num); } else { return format8(bigDecimal); }*/ return format8(bigDecimal); } /** * 格式化2位小数 * * @param num * @return */ public static String format2(String num) { if (StrUtils.isEmpty(num)) num = FORMAT2STR; return format2(new BigDecimal(num)); } /** * 格式化2位小数 * * @param num * @return */ @Deprecated public static String format2(Double num) { if (num == null || num == 0.0) num = 0.00; if (num == 0.015) num = 0.02; return df2.format(num); } /** * 格式化2位小数 * * @param num * @return */ public static String format2(BigDecimal num) { if (num == null) return FORMAT2STR; return num.setScale(2, java.math.BigDecimal.ROUND_HALF_UP).toPlainString(); } /** * 格式化2位小数 * * @param num * @return */ public static BigDecimal format2BigDecimal(BigDecimal num) { if (num == null) return new BigDecimal("0.00"); return num.setScale(2, java.math.BigDecimal.ROUND_HALF_UP); } /** * 格式化8位小数 * * @param num * @return */ public static String format8(BigDecimal num) { if (num == null) return FORMAT8STR; return num.setScale(8, java.math.BigDecimal.ROUND_HALF_UP).toPlainString(); } /** * 是否比0大 * num > 0 * * @return */ public static boolean biggerThan0(BigDecimal num) { if (num == null) return false; if (0 < num.compareTo(new BigDecimal(0))) return true; return false; } /** * 参数是否为null,为null时直接返回。部位null时做绝对值 * * @param val * @return * @author wuqingyu */ public static BigDecimal bigDecimalIsNull(BigDecimal val) { if (val != null) { val = val.abs(); } else { val = null; } return val; }}