1. 程式人生 > 其它 >Java學習筆記-stripTrailingZeros()和toPlainString()

Java學習筆記-stripTrailingZeros()和toPlainString()

技術標籤:java

toPlainString():返回不帶指數字段的此 BigDecimal 的字串表示形式
stripTrailingZeros():返回一個BigDecimal,它在數值上等於這一個,但表示形式移除所有尾部零

以下是stripTrailingZeros()的實現:

public BigDecimal stripTrailingZeros() {
        if (intCompact == 0 || (intVal != null && intVal.signum() == 0)) {
            return BigDecimal.ZERO;
        } else if (intCompact != INFLATED) {
            return createAndStripZerosToMatchScale(intCompact, scale, Long.MIN_VALUE);
        } else {
            return createAndStripZerosToMatchScale(intVal, scale, Long.MIN_VALUE);
        }
    }

從上述實現我們就可以知道:stripTrailingZeros()是去除末尾的0

以下是toPlainString()的實現

public String toPlainString() {
        if(scale==0) {
            if(intCompact!=INFLATED) {
                return Long.toString(intCompact);
            } else {
                return intVal.toString();
            }
        }
        if(this.scale<0) { // No decimal point
            if(signum()==0) {
                return "0";
            }
            int tailingZeros = checkScaleNonZero((-(long)scale));
            StringBuilder buf;
            if(intCompact!=INFLATED) {
                buf = new StringBuilder(20+tailingZeros);
                buf.append(intCompact);
            } else {
                String str = intVal.toString();
                buf = new StringBuilder(str.length()+tailingZeros);
                buf.append(str);
            }
            for (int i = 0; i < tailingZeros; i++)
                buf.append('0');
            return buf.toString();
        }
        String str ;
        if(intCompact!=INFLATED) {
            str = Long.toString(Math.abs(intCompact));
        } else {
            str = intVal.abs().toString();
        }
        return getValueString(signum(), str, scale);
    }

測試如下:

public class Test {
    public static void main(String[] args) {
        BigDecimal a1=new BigDecimal("1000.123344");
        BigDecimal a2=new BigDecimal("9.011110000");

        System.out.println(a1.toPlainString());
        System.out.println(a2.stripTrailingZeros());
    }
}

輸出如下: