[프로그래머스] 나눗셈 Java

지인·2023년 6월 9일
0

알고리즘

목록 보기
2/21

class Solution {
    public int solution(int num1, int num2) {
        double answer = (double)num1/(double)num2*1000;
        
        return (int)answer;
    }
}

🐰 (double)(num1/num2)*1000으로 코드를 작성했는데 원하는 답이 나오지 않았다.
혹시나 해서 num1, num2에 각각 형변환을 해줬더니 답이 나왔다.

🐰 왜 원하는 답과 다르게 나왔었는지 찾아보았는데 연산 순서와 형변환의 차이 때문이였다.

  • (double)(num1/num2) : num1/num2를 먼저 계산하고 그 결과를 정수로 형변환한 다음에 double로 다시 형변환한다. 그래서 정수 나눗셈의 결과를 형변환하여 소수점 이하의 값을 잃어버리게 된다.

  • (double)num1/num2 : num1을 먼저 double로 형변환한 다음에 num2와 나눗셈을 수행한다. num1이 double로 형변환되어 소수점 이하의 값을 유지할 수 있다.

  • (double)num1/(double)num2 : num1과 num2를 double로 형변환한 다음 나눗셈을 수행한다. 때문에 소수점 이하의 값을 유지할 수 있다.

🐰 답이 다르게 나온 이유를 찾다가 (double)num1/num2 이렇게 만든 코드도 보았다. 한가지 문제에 여러 사람들의 생각에 따라서 여러 답이 나온다는게 너무 신기했다.

profile
열쩡

0개의 댓글