数字格式化NumberFormat

做财务的同学遇到逗号分隔的数值格式,会用到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;
}

posted on 2016-09-08 17:54  Snowman-Nunu  阅读(283)  评论(0编辑  收藏  举报

导航