java app显示数字格式化以万、亿为单位转换,如1.7万

本文介绍了一种数字格式化方法,可以将数字转换为易于阅读的形式,如“1.7万”、“9999.9万”或“1.1亿”。该方法支持多种格式化选项,包括千位数格式化。
/** 
     * <pre> 
     * 数字格式化显示  
     * 小于万默认显示 大于万以1.7万方式显示最大是9999.9万  
     * 大于亿以1.1亿方式显示最大没有限制都是亿单位  
     * make by dongxh 2017年12月28日上午10:05:22 
     * </pre> 
     * @param num 
     *            格式化的数字 
     * @param kBool 
     *            是否格式化千,为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();
	 }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值