数字转换校验工具类
1 package com.zhouyy.netBank.util; 2 3 import java.math.BigDecimal; 4 import java.text.DecimalFormat; 5 6 /** 7 * Created by zhoul on 2017/6/14. 8 */ 9 public class NumberUtil { 10 11 // 数字转字符串 12 public static String formatNumeric(double numeric, String pattern) { 13 if (numeric == -0) { 14 numeric = 0; 15 } 16 DecimalFormat decFormat = new DecimalFormat(pattern); 17 return decFormat.format(numeric); 18 } 19 20 public static String formatNumeric(BigDecimal numeric, String pattern) { 21 if (numeric == null) { 22 numeric = BigDecimal.ZERO; 23 } 24 return formatNumeric(numeric.doubleValue(), pattern); 25 } 26 27 // 数字转逗号分隔字符串 28 public static String formatNumeric(double numeric) { 29 return formatNumeric(numeric, "#,##0.00"); 30 } 31 32 public static String formatNumeric(BigDecimal numeric) { 33 if (numeric == null) { 34 numeric = BigDecimal.ZERO; 35 } 36 return formatNumeric(numeric.doubleValue()); 37 } 38 39 // 数字转逗号分隔字符串,附加小数位数(保留8位小数,那么dec参数为6,即,最少要有2位小数) 40 public static String formatNumeric(double numeric, int dec) { 41 String p = ""; 42 for (int i = 0; i < dec; i++) { 43 p += "#"; 44 } 45 return formatNumeric(numeric, "#,##0.00" + p); 46 } 47 48 public static String formatNumeric(BigDecimal numeric, int dec) { 49 if (numeric == null) { 50 numeric = BigDecimal.ZERO; 51 } 52 return formatNumeric(numeric.doubleValue(), dec); 53 } 54 55 // 数字转逗号分隔字符串;如果数字为零,则返回空 56 public static String formatNumericEx(double numeric) { 57 String result; 58 if (numeric != 0) { 59 result = formatNumeric(numeric); 60 } else { 61 result = "0.00"; 62 } 63 return result; 64 } 65 66 public static String formatNumericEx(BigDecimal numeric) { 67 if (numeric == null) { 68 numeric = BigDecimal.ZERO; 69 } 70 return formatNumericEx(numeric.doubleValue()); 71 } 72 73 // 将大数字格式化为字符串,避免以科学计数法显示 74 public static String formatDouble(double numeric) { 75 return formatNumeric(numeric, "#0.00"); 76 } 77 78 public static String formatDouble(BigDecimal numeric) { 79 if (numeric == null) { 80 numeric = BigDecimal.ZERO; 81 } 82 return formatDouble(numeric.doubleValue()); 83 } 84 85 // 将大数字格式化为字符串,避免以科学计数法显示5位 86 public static String formatDoubles(double numeric) { 87 return formatNumeric(numeric, "#0.00000"); 88 } 89 90 // 将大数字格式化为字符串,避免以科学计数法显示4位 91 public static String formatDoubles(BigDecimal numeric,int dec) { 92 String p = ""; 93 if(dec<2){ 94 dec = 2; 95 } 96 for (int i = 0; i < dec; i++) { 97 p += "0"; 98 } 99 100 return formatNumeric(numeric, "#0."+p); 101 } 102 103 public static String formatDoubles(BigDecimal numeric) { 104 if (numeric == null) { 105 numeric = BigDecimal.ZERO; 106 } 107 return formatNumeric(numeric.doubleValue(), "#0.00000"); 108 } 109 110 public static String formatDoubleWithSix(double numeric) { 111 return formatNumeric(numeric, "#0.000000"); 112 } 113 114 public static String formatDoubleWithSix(BigDecimal numeric) { 115 if (numeric == null) { 116 numeric = BigDecimal.ZERO; 117 } 118 return formatNumeric(numeric.doubleValue(), "#0.000000"); 119 } 120 121 // 将形如234,567.00的逗号分隔字符串格式化为Double 122 public static double formatNumeric(String str) { 123 try { 124 return (new DecimalFormat("#,##0.00######")).parse(str) 125 .doubleValue(); 126 } catch (Exception e) { 127 return 0; 128 } 129 } 130 131 /** 132 * 数据非空转换为零 133 */ 134 public static BigDecimal formatNumericNull(BigDecimal numeric) { 135 if (numeric == null) { 136 numeric = BigDecimal.ZERO; 137 } 138 return numeric; 139 } 140 141 /** 142 * Object转换为BigDecimal 143 */ 144 public static BigDecimal objToBigDecimal(Object objNum) { 145 BigDecimal num=null; 146 if (objNum != null) { 147 if(objNum instanceof BigDecimal){ 148 num=(BigDecimal)objNum; 149 }else if(objNum instanceof Integer){ 150 num=new BigDecimal((Integer)objNum); 151 }else if(objNum instanceof Double){ 152 num=new BigDecimal((Double)objNum); 153 }else if(objNum instanceof String){ 154 num=new BigDecimal((String)objNum); 155 } 156 } 157 return num; 158 } 159 160 public static void main(String[] args) { 161 System.out.println(NumberUtil.formatDouble(9.435)); 162 } 163 164 }