C++에서 정수끼리 나눗셈을 하면 소수점 이하의 숫자는 버려진다.
#include <iostream>
using namespace std;
int solution(int num1, int num2) { //num1 = 10, num2 = 2
float answer = num1 / num2;
return answer; //answer = 5;
}
이렇게 했을때 결과 자료형을 float로 하여도 값은 정수가 나온다. 이럴때엔 연산되는 두가지 변수 중 한가지를 실수형으로 변경하면 해결되는데, 이땐 static_cast (변수명)을 사용한다.
#include <iostream>
using namespace std;
int solution(int num1, int num2) { //num1 = 9, num2 = 2
float answer = static_cast<float> (num1) / num2;
return answer; //answer = 4.5
}
이 코드처럼 static_cast (변수명)를 쓰면 값은 소수점으로 나온다. 그냥 캐스트를 해서 float answer = (float)num1 / num2 를 쓰는 방법도 있지만 static_cast의 방법이 안정성이 뛰어난다고 한다.