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

/*字符串帮助类
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 list = new ArrayList();
        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;

 

你可能感兴趣的:(Java,.Net)