做财务的同学遇到逗号分隔的数值格式,会用到NumberFormat类格式化数据
BigDecimal bigDecimal = new BigDecimal("1000000000.4110001");
NumberFormat instance = NumberFormat.getInstance(Locale.US);System.out.println(instance.format(bigDecimal));
非常简便,但是会失去精度,得到的结果是:1,000,000,000.411,如果这样足够项目里的场景就可以了,下面介绍一种方法可以保留精度的格式数据。
private String parseMoney(String str) {
String num = ""; String decimalNum = ""; StringBuffer ret = new StringBuffer(); if (str.contains(".")) { String[] temp = str.split("\\."); num = temp[0]; decimalNum = temp[1]; } else { num = str; }if (num.length() > 3) {
for (int i = num.length() - 1; i >= 0; i--) { ret.append(num.charAt(i)); if ((num.length() - i) % 3 == 0) { ret.append(","); } }return ret.reverse().toString() + "." + decimalNum;
} return str; }