오류, 기능, 문제해결(JAVA)

두 수를 나누는데 소수점을 활용해야함

seungmin576 2024. 12. 23. 15:23

결론부터 말하면 나누기에서 소수점부분을 활용하려면 실수형으로 선언하여 나눠야한다.

 

정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요. 라는 문제였다.

num1 = 3, num2 = 2 라면(단 num1과 num2는 0보다 크고 100보다 같거나 작아야함)

3/2 = 1.5 

1.5*1000= 1500

이므로 1500이 출력되게 하는 거였다.

package programmers;

public class NumDivision {
    public int solution(int num1, int num2) {
        int answer = 0;
        if((num1 <= 100 || num1 > 0) &&(num2 > 0 || num2 <= 100))
            answer = (num1 / num2) * 1000);
        return answer;
    }
}

 

처음엔 그냥 이렇게 코드를 썼더니

3/2 = 1

1* 1000 = 1000

이런식으로 나와 계속 원하는 값이 나오지 않았다.

정수형끼리 나누게 하니 소수점 부분이 버려져 결과가 다르게 나오던 것이다.

나눌때 실수형으로 형변환하여 나눠야 소수점이 나온다는 걸 알아냈다.

package programmers;

public class NumDivision {
    public int solution(int num1, int num2) {
        int answer = 0;
        if((num1 <= 100 || num1 >= 0) &&(num2 >= 0 || num2 <= 100))
            answer = (int) ((num1 / (double)num2) * 1000);
        return answer;
    }
}

이런식으로 num2를 double형으로 명시적 형 변환을 한다음 num1/ (double)num2 * 1000 문장을 전부 괄호로 감싼다음 int형으로 다시 명시적 형변환을하였다.

이렇게 하니 순환소수더라도 마지막에 정수형 변환하는 과정에서 소수점부분이 잘려나가 깔끔하게 답이 나왔다.