double 형 비교
값 비교에서 string은 equals() 함수를 잘 활용하지면
숫자값은 주로 == 연산자로 값 비교를 해왔다.
그러던 중 똑같은 double형 값을 비교했는데 == 연산자로 확인이 되지 않았다.
@Test
public void compareNumber(){
List<Double> aList = new ArrayList<> ();
double a = 10.0;
aList.add (a);
List<Double> bList = new ArrayList<> ();
double b = 10;
bList.add (b);
System.out.println (a==b );
System.out.println (aList.get (0)==bList.get (0) );
}
위 처럼 double a와 b 를 연산자로 비교하였을때 true지만 <- double은 자료형
list에 넣어서 확인하였을 때는 false로 나오는 경우다.
(Double a = 10.0; Double b =10.0; 인경우는 ==연산자로 비교하였을 때 false로 나온다) <- Double 은 클래스
이럴때 사용하는 것이 함수를 호출한 Number 객체를 인자값과 비교하는 compareTo() 함수다.
위 경우
System.out.println (aList.get (0).compareTo (bList.get (0))==0 );
와같이 사용하여 비교할 수 있었다.
compareTo()는
비교대상이 동일한 값일 때 : 0
비교 대상이 작은 경우 : -1
비교 대상이 큰 경우 : 1
double x = 10.0;
Double x = 10.0;
System.out.println (x.compareTo(5.0) );
System.out.println (x.compareTo(10.0) );
System.out.println (x.compareTo(20.0) );
1
0
-1
1과 -1이 헷갈릴 수 있는데 (comepareTo의 인자가 비교대상이다.
난 비교대상이 작은경우(사용하는 값 x가 크기 때문에 이겼다. 긍정 1)
난 비교대상이 큰경우(사용하는 값 x가 작기 때문에 이겼다. 부정 -1)
로 생각한다.