C++ STL : <cmath> 헤더

김종민·2025년 2월 27일

C++

목록 보기
2/5

1. <cmath>

C++ 표준 라이브러리 중 하나로 수학 연산을 위한 여러 함수와 매크로를 포함한다.


2. 자주 사용되는 함수

함수 정리된 링크

abs() : 절댓값 구하기

문법

double abs(double number);
float abs(float number);

number의 절댓값을 리턴한다.

예시

#include <iostream>
#include <cmath>
using namespace std;

int main() {
  cout << abs(-4.7) << "\n";
  cout << abs(4.7) << "\n"; 
  cout << abs(3) << "\n";
  return 0;
}

출력

4.7
4.7
3

fabs()와의 차이

C++11 이하 버전에서는 정수용 (abs())과 실수용(fabs())으로 차이가 있어
abs(-5.6) 이런 식으로 실수를 넘기면 정수로 자동 형변환되어 5를 리턴하는 식의 문제가 발생했지만 현재 사용할 때는 연산자 오버로딩이 되어있어 abs()만 사용해도 5.6으로 소수 부분까지 제대로 출력된다.

스택오버플로우 질문글 링크


pow() : 거듭제곱한 값 구하기

문법

pow(double base, double exponent);
pow(float base, float exponent);

base를 exponent 제곱한 값을 리턴한다.

예시

#include <iostream>
#include <cmath>
using namespace std;

int main() {
  cout << pow(2.0f, 8.0f) << "\n";
  cout << pow(3.0f, 4.0f) << "\n";
  cout << pow(9.0, 0.5) << "\n";
  cout << pow(8.0, -1.0) << "\n";
  cout << pow(10.0f, -2.0f) << "\n";
  return 0;
}

출력

256
81
3
0.125
0.01

📖
문제를 풀 때 정수형 인자만 사용해서 정수 연산만 되는 줄 알았는데 원형 문법 자체가 실수 연상용이었다.
정수를 입력해도 실수로 처리된다고 한다.

0 제곱은 1을 반환하고 음수의 제곱은 지수의 -를 지우고 역수를 취하면 된다.
증명 링크


sqrt() : 제곱근 값 구하기

문법

sqrt(double number);
sqrt(float number);

number의 제곱근 갌을 리턴한다.

예시

#include <iostream>
#include <cmath>
using namespace std;

int main() {
  cout << sqrt(0) << "\n";
  cout << sqrt(1) << "\n";
  cout << sqrt(9) << "\n";
  cout << sqrt(0.64) << "\n";
  cout << sqrt(-25) << "\n";
  return 0;
}

출력

0
1
3
0.8
-nan

📖
어떤 수를 제곱하여 음수가 나올 수 없으므로 음수를 넘기면 에러 메시지를 출력한다.


삼각함수 관련 함수들

코사인, 사인, 탄젠트, 아크 코사인 ... 관련 값을 구할 수 있는 함수들이 있다.

float acos(float x);
float asin(float x);
float atan(float x);
float cos(float x);
float sin(float x);
float tan(float x);
.
.
.

참고 자료

https://learn.microsoft.com/ko-kr/cpp/standard-library/cmath?view=msvc-170
https://www.w3schools.com/cpp/cpp_ref_math.asp
https://alpaca-code.tistory.com/81

profile
정리와 기록

0개의 댓글