C++ 숫자 타입 마스터하기: 실전 가이드
보통 숫자를 다룰 때 int, short, long, float, double 같은 기본 데이터 타입을 사용합니다. 숫자 데이터 타입과 가능한 값, 범위는 C++ 데이터 타입 논의 시 설명했습니다.
C++에서 숫자 정의
이전 장의 여러 예제에서 이미 숫자를 정의했습니다. 여기 C++에서 다양한 타입의 숫자를 정의하는 또 다른 종합 예제가 있습니다.
Live Demo
#include <iostream>
using namespace std;
int main () {
// 숫자 정의:
short s;
int i;
long l;
float f;
double d;
// 숫자 대입:
s = 10;
i = 1000;
l = 1000000;
f = 230.47;
d = 30949.374;
// 숫자 출력:
cout << "short s :" << s << endl;
cout << "int i :" << i << endl;
cout << "long l :" << l << endl;
cout << "float f :" << f << endl;
cout << "double d :" << d << endl;
return 0;
}
위 코드를 컴파일하고 실행하면:
short s :10
int i :1000
long l :1000000
float f :230.47
double d :30949.4
C++ 수학 연산
직접 만드는 다양한 함수 외에도, C++에는 표준 C 및 C++ 라이브러리에서 사용할 수 있는 유용한 내장(built-in) 함수들이 포함되어 있습니다. 이 함수들은 프로그램에 포함시켜 사용할 수 있습니다.
C++에는 다양한 숫자에 대해 수행할 수 있는 풍부한 수학적 연산 세트가 있습니다. 다음 표는 C++에서 사용 가능한 유용한 내장 수학 함수들을 나열합니다.
이 함수들을 사용하려면 수학 헤더 파일 <cmath>를 포함해야 합니다.
| 번호 | 함수 및 목적 |
| 1 | double cos(double); 각도(double)를 받아 코사인을 반환합니다. |
| 2 | double sin(double); 각도(double)를 받아 사인을 반환합니다. |
| 3 | double tan(double); 각도(double)를 받아 탄젠트를 반환합니다. |
| 4 | double log(double); 숫자를 받아 자연로그를 반환합니다. |
| 5 | double pow(double, double); 첫 번째는 거듭제곱할 숫자, 두 번째는 거듭제곱할 지수 |
| 6 | double hypot(double, double); 직각삼각형 두 변의 길이를 전달하면 빗변 길이를 반환합니다. |
| 7 | double sqrt(double); 숫자를 전달하면 제곱근을 반환합니다. |
| 8 | int abs(int); 전달된 정수의 절댓값을 반환합니다. |
| 9 | double fabs(double); 전달된 모든 소수의 절댓값을 반환합니다. |
| 10 | double floor(double); 인수로 전달된 값보다 작거나 같은 가장 큰 정수를 찾습니다. |
몇 가지 수학 연산을 보여주는 간단한 예제:
Live Demo
#include <iostream>
#include <cmath>
using namespace std;
int main () {
// 숫자 정의:
short s = 10;
int i = -1000;
long l = 100000;
float f = 230.47;
double d = 200.374;
// 수학 연산:
cout << "sin(d) :" << sin(d) << endl;
cout << "abs(i) :" << abs(i) << endl;
cout << "floor(d) :" << floor(d) << endl;
cout << "sqrt(f) :" << sqrt(f) << endl;
cout << "pow( d, 2) :" << pow(d, 2) << endl;
return 0;
}
위 코드를 컴파일하고 실행하면:
sin(d) :-0.634939
abs(i) :1000
floor(d) :200
sqrt(f) :15.1812
pow( d, 2 ) :40149.7
C++ 난수 생성
난수를 생성하고 싶은 경우가 많습니다. 난수 생성에 대해 알아야 할 함수는 사실 두 가지입니다. 첫 번째는 rand()로, 이는 의사 난수만 반환합니다. 이를 해결하려면 먼저 srand() 함수를 호출해야 합니다.
몇 개의 난수를 생성하는 간단한 예제. 이 예제는 시스템 시간의 초 수를 얻기 위해 time() 함수를 사용해 rand() 함수를 무작위로 시드합니다.
Live Demo
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main () {
int i, j;
// 시드 설정
srand( (unsigned)time( NULL ) );
/* 10개의 난수 생성. */
for( i = 0; i < 10; i++ ) {
// 실제 난수 생성
j = rand();
cout << " Random Number : " << j << endl;
}
return 0;
}
위 코드를 컴파일하고 실행하면:
Random Number : 1748144778
Random Number : 630873888
Random Number : 2134540646
Random Number : 219404170
Random Number : 902129458
Random Number : 920445370
Random Number : 1319072661
Random Number : 257938873
Random Number : 1256201101
Random Number : 580322989