2019년 4월 4일 목요일

Hackerrank Day 2 Operators



알고리즘 연습 사이트
www.hackerrank.com


Day 2:Operators


* Java 자료형의 연산
서로 다른 자료형끼리의 연산은 작은 자료형이 큰 자료형 쪽으로 자동 변환이 일어난다.
따라서 아래와 같은 다른 자료형끼리 연산 시 double 형이 큰 쪽이므로 결과가 double형으로 나타나게 된다.

double d1 = 10.25;
int i1 = 10;

System.out.println(d1 * i1 /100);
System.out.println(d1 + i1 );
result
1.025
20.25

큰 자료형에서 작은 자료형으로 강제 변환을 할 때에는 데이터 손실이 일어난다.

* 자료형 크기 참고

byte(1byte) < short(2byte) < int(4byte) < long(8byte) < float(4byte) < double(8byte)

그외 boolean(논리형,1byte) , char (문자형,2byte)

두번째 문제 답은 아래와 같이 작성하였다.
result를 double 로 지정하여 값 손실이 없게 한 후 Math.round 메소드로 결과를 반올림 한 후에 값 출력 요구사항은 소수점이 없어야 했으므로, int로 강제 캐스팅 처리하였다.

static void solve(double meal_cost, int tip_percent, int tax_percent) {
        double result =  meal_cost 
        + ( meal_cost * tip_percent / 100) 
        + ( meal_cost * tax_percent / 100 ) ;
        
        System.out.println((int)Math.round(result));
}

댓글 없음:

댓글 쓰기