Javaの金銭タイプBigDecimal小数点を除いた後0

1960 ワード

/*      
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;