Java中金钱类型BigDecimal去除小数点后0

本文介绍了一个实用的字符串帮助类,其中包含一个名为removeAmtLastZero的方法,用于去除金额字符串末尾的无用零。通过遍历小数部分的每一位,该方法能够精确地移除所有不必要的零,从而提供更简洁的金额表示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*字符串帮助类
Author:William(徐威)
Create Time:2018-07-23*/
public class StringPlus {
/**
 * 金额去后面0
 * Author:William(徐威)
 * Create Time:2018-07-25
 *
 * @param money
 * @return
 */
public static BigDecimal removeAmtLastZero(BigDecimal money) {
    String strMoney = money.toString();
    if (strMoney.indexOf('.') != -1) {
        String[] arr = strMoney.split("\\.");
        String strDecimals = arr[1];
        List<String> list = new ArrayList<String>();
        boolean isCanAdd = false;
        for (int i = strDecimals.length() - 1; i > -1; i--) {
            String ss = String.valueOf(strDecimals.charAt(i));
            if (!ss.equals("0")) {
                isCanAdd = true;//从最后的字符开始算起,遇到第一个不是0的字符开始都是需要保留的字符
            }
            if (!ss.equals("0") || isCanAdd) {
                list.add(ss);
            }
        }
        StringBuffer strZero = new StringBuffer();
        for (int i = list.size() - 1; i > -1; i--) {
            strZero.append(list.get(i));
        }
        strMoney = String.format("%s.%s", arr[0], strZero.toString());
    }

    return new BigDecimal(strMoney);
}

}

使用:

BigDecimal a=new BigDecimal("0.00100000");
BigDecimal b=new BigDecimal("1.00000000");
BigDecimal c=new BigDecimal("10.06000000");
BigDecimal d=new BigDecimal("0.01000000");
BigDecimal e=new BigDecimal("1.01005000");
BigDecimal f=new BigDecimal("1.0105060000");

BigDecimal a1=StringPlus.removeAmtLastZero(a);
BigDecimal b1=StringPlus.removeAmtLastZero(b);
BigDecimal c1=StringPlus.removeAmtLastZero(c);
BigDecimal d1=StringPlus.removeAmtLastZero(d);
BigDecimal e1=StringPlus.removeAmtLastZero(e);
BigDecimal f1=StringPlus.removeAmtLastZero(f);

得出:

a1=0.001;

b1=1;

c1=10.06;

d1=0.01;

e1=1.01005;

f1=1.010506;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值