Java學習筆記-stripTrailingZeros()和toPlainString()
阿新 • • 發佈:2020-12-19
技術標籤: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()); } }
輸出如下: