格式化数字为千分位显示

前言:
最近在做单据打印,要求生成单据pdf文档里面的价钱金额以千分位的格式显示,在网上看了一些例子自己改写扩展了一下。

1、 DecimalFormat方式

    /**
     * 用DecimalFormat来实现千分位的自适应输出
     */
    public String amountInThousands(String strVal) {
        String strResult = "";
        if (StringUtils.isNotBlank(strVal)) {
            DecimalFormat df = new DecimalFormat("###,##0");
            if (strVal.indexOf(".") > 0) {
                switch (strVal.length() - (strVal.indexOf(".") + 1)) {
                    case 0:
                        df = new DecimalFormat("###,##0");
                        break;
                    case 1:
                        df = new DecimalFormat("###,##0.0");
                        break;
                    case 2:
                        df = new DecimalFormat("###,##0.00");
                        break;
                    case 3:
                        df = new DecimalFormat("###,##0.000");
                        break;
                    case 4:
                        df = new DecimalFormat("###,##0.0000");
                        break;
                    default:
                        df = new DecimalFormat("###,##0.00000");
                        break;
                }
            }
            strResult = df.format(new BigDecimal(strVal));
        }
        return strResult;
    }

2、字符串断位插入方式

    /**
     * 以指定字符串长度插入分隔符
     */
    public String strInThousands(String strVal, char delimiter, int intrvlLen) {
        String strResult = "";
        if (StringUtils.isNotBlank(strVal)) {
            StringBuffer sb = new StringBuffer(strVal);
            int pSite = sb.lastIndexOf(".");
            for (int insertSite = pSite - intrvlLen; insertSite > 0; insertSite -= intrvlLen) {
                sb = sb.insert(insertSite, delimiter);
            }
            strResult = sb.toString();
        }
        return strResult;
    }

3、测试

    @Test
    public void BigDecimalFormatOut() {
        
        System.err.println("amountInThousands:" + amountInThousands("123123123.123"));

        System.err.println("strInThousands:" + strInThousands("123123123.123", ',', 3));
    }
 输出结果:
	amountInThousands:123,123,123.123
	strInThousands:123,123,123.123
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值