결론부터 말하면 나누기에서 소수점부분을 활용하려면 실수형으로 선언하여 나눠야한다.
정수 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형으로 다시 명시적 형변환을하였다.
이렇게 하니 순환소수더라도 마지막에 정수형 변환하는 과정에서 소수점부분이 잘려나가 깔끔하게 답이 나왔다.
'오류, 기능, 문제해결(JAVA)' 카테고리의 다른 글
| 두 개의 정수를 입력 받으면, 두 정수 사이의 값을 출력(scanner 연습) (0) | 2024.12.27 |
|---|---|
| 문자열의 길이 추출 length() / length. length(), size() 차이 (0) | 2024.12.23 |
| static 문제 연습 중에 (0) | 2024.12.16 |
| 한 파일에 클래스가 두 개 존재 할 때 (0) | 2024.12.16 |
| 자바 별찍기 (0) | 2024.12.10 |