Java数字格式化显示
简介
- 在展示较大数字的时候希望展示中文转换后的字,如1.2万
代码
/**
* 数字格式化显示
*
* <p>小于万默认显示 大于万以1.7万方式显示最大是9999.9万
*
* <p>大于亿以1.1亿方式显示最大没有限制都是亿单位
*
* @param num
* <p>格式化的数字
* @param kBool
* <p>是否格式化千,为true,并且num大于999就显示999+,小于等于999就正常显示
* @return
*/
public static String formatNum(String num, Boolean kBool) {
StringBuffer sb = new StringBuffer();
if (!StringUtils.isNumeric(num)) {
return "0";
}
if (kBool == null) {
kBool = false;
}
BigDecimal b0 = new BigDecimal("1000");
BigDecimal b1 = new BigDecimal("10000");
BigDecimal b2 = new BigDecimal("100000000");
BigDecimal b3 = new BigDecimal(num);
String formatNumStr = "";
String nuit = "";
// 以千为单位处理
if (kBool) {
if (b3.compareTo(b0) == 0 || b3.compareTo(b0) == 1) {
return "999+";
}
return num;
}
// 以万为单位处理
if (b3.compareTo(b1) == -1) {
sb.append(b3.toString());
} else if ((b3.compareTo(b1) == 0 && b3.compareTo(b1) == 1) || b3.compareTo(b2) == -1) {
formatNumStr = b3.divide(b1).toString();
nuit = "万";
} else if (b3.compareTo(b2) == 0 || b3.compareTo(b2) == 1) {
formatNumStr = b3.divide(b2).toString();
nuit = "亿";
}
if (!"".equals(formatNumStr)) {
int i = formatNumStr.indexOf(".");
if (i == -1) {
sb.append(formatNumStr).append(nuit);
} else {
i = i + 1;
String v = formatNumStr.substring(i, i + 1);
if (!v.equals("0")) {
sb.append(formatNumStr.substring(0, i + 1)).append(nuit);
} else {
sb.append(formatNumStr.substring(0, i - 1)).append(nuit);
}
}
}
if (sb.length() == 0) {
return "0";
}
return sb.toString();
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118718.html