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()
에서 BigDecimal
그 compareTo
것을 확인할 수 있습니다 x
같다가 y
?
추신 : BigDecimal에는 inflate()
메소드에 대한 equals()
메소드가 있습니다. 무엇 않습니다 inflate()
실제로합니까?
대답은 메소드 의 JavaDoc에 있습니다equals()
.
와 달리
compareTo
,이 방법은 두BigDecimal
객체가 값과 스케일이 동일한 경우에만 동일한 것으로 간주 합니다 (따라서이 방법과 비교할 때 2.0은 2.00이 아닙니다).
즉 , 모든 측면 에서 객체가 정확히 동일한 지 equals()
확인합니다 . "only"는 숫자 값을 비교합니다.BigDecimal
compareTo()
BigDecimal에는 equals () 메소드에 inflate () 메소드가 있습니다. inflate () 실제로 무엇을합니까?
기본적으로 필요한 경우 inflate()
호출 BigInteger.valueOf(intCompact)
합니다. 즉, BigInteger
from으로 저장된 스케일되지 않은 값을 만듭니다 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
'development' 카테고리의 다른 글
네비게이션 컨트롤러 스택, 서브 뷰 또는 모달 컨트롤러를 사용하지 않고 뷰 컨트롤러의 애니메이션 변경? (0) | 2020.06.20 |
---|---|
Ember.js의 뷰와 컴포넌트 (0) | 2020.06.20 |
기본 Anaconda Python 환경을 변경하는 방법 (0) | 2020.06.20 |
“(i == i);”하는 방법 (0) | 2020.06.20 |
CSS 선택기-주어진 자식이있는 요소 (0) | 2020.06.20 |