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 }