C++에서 정수끼리 나눗셈을 하게 되면, 소수점 이하의 숫자는 버려집니다.
#include <iostream>
using namespace std;
int main(){
int num1 = 10;
int num2 = 3;
float result = num1 / num2;
cout << "result: " << result << endl;
// result: 3
return 0;
}
10 / 3 = 3.333333333.. 이지만, 정수형이기 때문에 3으로 출력됩니다.
심지어 결과 자료형을 실수형인 double 또는 float로 선언해도 동일합니다.
이럴 때는 연산되는 두가지 변수 중 한가지를 실수형으로 변경하면 해결됩니다.
그것은 static_cast<type>(variable_name) 명령어로 진행됩니다.
예를 들어, 상위 예시에서 float result = static_cast<double>(num1) / num2; 로 선언했다면,
결과가 원하던대로 3.33333 으로 나오게 됩니다.
float result = (double)num1 / num2; 의 방법도 존재합니다만,
static_cast의 방법이 안정성 면에서 더 뛰어나기 때문에 첫번째 방법을 권장합니다.
'C++ > 기타' 카테고리의 다른 글
[C++] Compund Assignment Operator (0) | 2023.12.07 |
---|---|
[C++] c++에서 boolean 값을 true/false로 출력하고 싶을 때 (0) | 2023.12.07 |
[C++] Increment/Decrement Operator (증감연산자) ++, -- (0) | 2023.12.07 |
[C++] Assignment Operator (할당 연산자), = (0) | 2023.12.06 |
[C++] 배열 (Array) (0) | 2023.12.05 |