development

BigDecimal equals () 대 compareTo ()

big-blog 2020. 6. 20. 09:30
반응형

BigDecimal equals () 대 compareTo ()


간단한 테스트 클래스를 고려하십시오.

import java.math.BigDecimal;

/**
 * @author The Elite Gentleman
 *
 */
public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        BigDecimal x = new BigDecimal("1");
        BigDecimal y = new BigDecimal("1.00");
        System.out.println(x.equals(y));
        System.out.println(x.compareTo(y) == 0 ? "true": "false");
    }

}

(의식적으로) 객체 참조 x아니라고 말할 수 y있지만 프로그램을 실행하면 다음 결과가 표시됩니다.

false
true

질문 : 차이 무엇 compareTo()equals()에서 BigDecimalcompareTo것을 확인할 수 있습니다 x같다가 y?

추신 : BigDecimal에는 inflate()메소드에 대한 equals()메소드가 있습니다. 무엇 않습니다 inflate()실제로합니까?


대답은 메소드 의 JavaDoc에 있습니다equals() .

와 달리 compareTo,이 방법은 두 BigDecimal객체가 값과 스케일이 동일한 경우에만 동일한 것으로 간주 합니다 (따라서이 방법과 비교할 때 2.0은 2.00이 아닙니다).

, 모든 측면 에서 객체가 정확히 동일한 지 equals()확인합니다 . "only"는 숫자 값을 비교합니다.BigDecimalcompareTo()


BigDecimal에는 equals () 메소드에 inflate () 메소드가 있습니다. inflate () 실제로 무엇을합니까?

기본적으로 필요한 경우 inflate()호출 BigInteger.valueOf(intCompact)합니다. 즉, BigIntegerfrom으로 저장된 스케일되지 않은 값을 만듭니다 long intCompact. 필요하지 않고 BigInteger스케일링 되지 않은 값이 long BigDecimal가능한 한 공간을 절약하려고 시도 하는 것 같습니다.


이중 값과 비교할 수도 있습니다

BigDecimal a= new BigDecimal("1.1"); BigDecimal b =new BigDecimal("1.1");
System.out.println(a.doubleValue()==b.doubleValue());

참고 URL : https://stackoverflow.com/questions/6787142/bigdecimal-equals-versus-compareto

반응형