최근 프로그래머스 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;
👀 참고
자바의 정석