显示数字格式化以万、亿为单位转换

public static StringBuffer formatNum(String num, Boolean b) {  
        StringBuffer sb = new StringBuffer();  
        BigDecimal b0 = new BigDecimal("100");  
        BigDecimal b1 = new BigDecimal("10000");  
        BigDecimal b2 = new BigDecimal("100000000");  
        BigDecimal b3 = new BigDecimal(num);  

        String formatNumStr = "";  
        String unit = "";  

        // 以百为单位处理  
        if (b) {  
            if (b3.compareTo(b0) == 0 || b3.compareTo(b0) == 1) {  
                return sb.append("99+");  
            }  
            return sb.append(num);  
        }  

        // 以万为单位处理  
        if (b3.compareTo(b1) == -1) {  
            formatNumStr = b3.toString();  
        } else if ((b3.compareTo(b1) == 0 && b3.compareTo(b1) == 1)  
                || b3.compareTo(b2) == -1) {
            unit = "万";  

            formatNumStr = b3.divide(b1).toString();  
        } else if (b3.compareTo(b2) == 0 || b3.compareTo(b2) == 1) {  
            unit = "亿";
            formatNumStr = b3.divide(b2).toString();  

        }  
        if (!"".equals(formatNumStr)) {  
            int i = formatNumStr.indexOf(".");  
            if (i == -1) {  
                sb.append(formatNumStr).append(unit);  
            } else {  
                i = i + 1;  
                String v = formatNumStr.substring(i, i + 1);  
                if (!v.equals("0")) {  
                    sb.append(formatNumStr.substring(0, i + 1)).append(unit);  
                } else {  
                    sb.append(formatNumStr.substring(0, i - 1)).append(unit);  
                }  
            }  
        }  
        if (sb.length() == 0)  
            return sb.append("0");  
        return sb;
    }

测试

        System.out.println(formatNum("9",false));
        System.out.println(formatNum("109",false));
        System.out.println(formatNum("109",true));
        System.out.println(formatNum("10000",false));
        System.out.println(formatNum("10001",false));
        System.out.println(formatNum("2000000",false));
        System.out.println(formatNum("2001111",false));

输出结果

9
109
99+
1万
1万
200万
200.1万
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值