코딩테스트

[프로그래머스][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형이어야 한다.