코딩테스트
[프로그래머스][C++] 두 수의 나눗셈 (int형 정수 나누기 소수점 얻기)
EEEUN
2022. 10. 2. 13:16
#include <string>
#include <vector>
using namespace std;
int solution(int num1, int num2) {
return ((double) num1 / (double) num2) * 1000;
}
ㄴ 위 문제에 대한 풀이.
C++ 에서의 나누기
C와 C++은 int형 정수로 나누기를 실행하면 소수점이 나오지 않는다.
int형의 나누기를 할 때 소수점을 얻으려면 double형으로 형변환을 해주어야 한다. (float, long double도 가능)
int a = 3;
int b = 2;
double c = a/b; // 1
double d = (double) a / (double) b; // 1.5
cout << 3/2; // 1 출력
cout << 3/2.0; // 1.5 출력
cout << 3/2.; // 1.5 출력
왜 c는 1.5가 아닌 1이 나왔을까? C와 C++에서 나누기를 할 때는 연산이 끝나고 소수점 아래를 버리고 출력하기 때문이다.
소수점을 가진 double형과 같은 결과를 얻고 싶다면, 나눌 값이나 나누어질 값이 double형이어야 한다.