0 값에 대한 BigDecimal stripTrailingZeros 메소드의 동작 변경

Java 8에서는 java.math.BigDecimal stripTrailingZeros 메소드는 값이 숫자적으로 0과 같고 0이 아닌 스케일을 갖는 경우에 사용됩니다. 스케일은 소수점 오른쪽에 있는 0의 수입니다. Java 8 이전에서, stripTrailingZeros 메소드는 값 자체를 리턴했습니다. Java 8에서 메소드가 BigDecimal.ZERO를 리턴하는데, 이는 0 스케일이 포함된 값 0입니다.

이 규칙은 java.math.BigDecimal stripTrailingZeros 메소드에 플래그를 지정합니다. 이 동작 변경에 코드 변경이 필요하지 않은데, 이는 현재 메소드의 예상되는 동작을 생성합니다. Java 8을 사용하도록 준비하는 경우 테스트 케이스가 실패할 수 있으므로 이 차이점을 알아야 합니다.

다음 예제에서는 stripTrailingZeros 메소드의 사용을 표시합니다.

< span class="Code"> < span class= "JavaKeyword"> public static void < /span> printResults(< span class="JavaType">BigDecimal< /span> dec) {

System.out.print("Starting decimal = " + dec.toPlainString());
System.out.println(" scale = " + dec.scale());
dec = dec.stripTrailingZeros();
System.out.print("Ending decimal = " + dec.toPlainString());
System.out.println(" scale = " + dec.scale());
}

public static void main(String args[]) {

BigDecimal dec = new BigDecimal("0.000000");
printResults(dec);
}

Java 7을 통해 이 코드를 호출하는 경우 다음 출력이 표시됩니다.

Starting decimal = 0.000000 scale = 6
Ending decimal = 0.000000 scale = 6

Java 8에서는 다음 출력이 표시됩니다.

Starting decimal = 0.000000 scale = 6
Ending decimal = 0 scale = 0

BigDecimal 메소드에 대한 자세한 정보는 java.math.BigDecimal Java 문서를 참조하십시오.