최근 프로그래머스 lv0이 새로 업데이트 되고 나서, 야금야근 풀어보고 있는 중이다.
이 문제는 프로그래머스 lv0 중에서도 쉬운 문제라고 생각해서, 계획도 안세우고 자신있게 코드를 적어 실행했다. 돌아온건 차가운 에러 메시지 🥲...
자바 기초 문법이 부족한 탓이라고 생각이 들어서 이 문제는 정리해보기로 한다.
정수 num1과 num2가 매개변수로 주어질 때,
num1을 num2로 나눈 값에 1,000을 곱한 후
정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
0 < num1 ≤ 100
0 < num2 ≤ 100
1. 나눗셈 연산의 데이터 타입은 double로
문제를 보자마자 나눗셈 연산이 들어있으므로 num1을 double로 변환하여 풀기를 시도했다. 테스트 코드 실행하여 결과값을 얻었지만, 예상한 값과 도출된 값이 전혀 달랐다. int answer 변수에 저장하려면 다시 int로 형변환을 해야하는데, 그 변환 시점이 틀렸구나 싶어 다시 시도했다.
// 최초에 제출한 코드
class Solution {
public int solution(int num1, int num2) {
int answer = (int)((double)num1/num2) * 1000;
return answer;
}
}
// 최종 제출한 답변
class Solution {
public int solution(int num1, int num2) {
int answer = (int)((double)num1/num2 * 1000);
return answer;
}
}
Java에는 다음 두 종류의 데이터 타입이 있다.
그 중 Primitive Type에 대한 형 변환에 대해 추가로 공부해보고자 한다.
Java의 Primitive Type들은 각각 표현할 수 있는 데이터의 크기가 다르다.
따라서, 형변환 시 데이터가 손실되거나 손실되지 않을 수 있다.
| 종류 | 크기 |
|---|---|
| byte | 8bit |
| short | 16bit |
| int | 32bit |
| long | 64bit |
| float | 32bit |
| double | 64bit |
| char | 16bit |
int intNum = (int) floatNum;
float floatNum = intNum;
👀 참고
자바의 정석