파이썬에서 math 모듈은 다양한 수학 함수를 사용할 수 있도록 지원하는 표준 라이브러리입니다. 이 모듈의 모든 함수는 정수(int) 또는 실수(float) 타입 객체에만 적용할 수 있으며, 복소수(complex)에는 사용할 수 없습니다.
math 모듈을 사용하려면 먼저 코드 상단에 모듈을 임포트해야 합니다.
import math
주요 상수(Constants)
math 모듈은 복잡한 계산에 바로 활용할 수 있는 여러 수학 상수를 제공합니다.
| 번호 | 상수 & 설명 |
|---|---|
| 1 | pi 원주율 π의 값을 반환합니다. 약 3.141592 |
| 2 | E 자연상수 e의 값을 반환합니다. 약 2.718281 |
| 3 | tau 타우(tau)의 값을 반환합니다. tau = 6.283185 (즉, 2π) |
| 4 | inf 무한대(infinity)를 나타내는 값입니다. |
| 5 | nan 숫자가 아님(Not a Number)을 의미하는 특수한 값입니다. |
숫자 및 수치 표현 함수
아래 함수들은 숫자를 다양한 방식으로 변환하고 검증하는 데 사용됩니다. 주요 메서드는 다음과 같습니다.
| 번호 | 함수 & 설명 |
|---|---|
| 1 | ceil(x) x보다 크거나 같은 가장 작은 정수(올림 값)를 반환합니다. |
| 2 | copysign(x, y) y의 부호를 x에 복사하여 반환합니다. |
| 3 | fabs(x) x의 절댓값을 반환합니다. |
| 4 | factorial(x) x의 팩토리얼(x!)을 반환합니다. 단, x ≥ 0이어야 합니다. |
| 5 | floor(x) x보다 작거나 같은 가장 큰 정수(내림 값)를 반환합니다. |
| 6 | fsum(iterable) 반복 가능한(iterable) 객체의 모든 요소를 더한 합계를 부동소수점 오차 없이 정확하게 계산합니다. |
| 7 | gcd(x, y) x와 y의 최대공약수(GCD)를 반환합니다. |
| 8 | isfinite(x) x가 무한대도 아니고 NaN도 아닌지 확인합니다. |
| 9 | isinf(x) x가 무한대인지 확인합니다. |
| 10 | isnan(x) x가 숫자가 아닌지(NaN) 확인합니다. |
| 11 | remainder(x, y) x를 y로 나눈 나머지를 IEEE 754 방식으로 반환합니다. |
예제 코드
import math
print('23.56의 올림 값과 내림 값: ' + str(math.ceil(23.56)) + ', ' + str(math.floor(23.56)))
x = 10
y = -15
print('y의 부호를 x에 복사한 값: ' + str(math.copysign(x, y)))
print('-96과 56의 절댓값: ' + str(math.fabs(-96)) + ', ' + str(math.fabs(56)))
my_list = [12, 4.25, 89, 3.02, -65.23, -7.2, 6.3]
print('리스트 요소들의 합: ' + str(math.fsum(my_list)))
print('24와 56의 최대공약수(GCD): ' + str(math.gcd(24, 56)))
x = float('nan')
if math.isnan(x):
print('숫자가 아닙니다')
x = float('inf')
y = 45
if math.isinf(x):
print('무한대입니다')
print(math.isfinite(x)) # x는 유한한 수가 아님
print(math.isfinite(y)) # y는 유한한 수임
실행 결과
23.56의 올림 값과 내림 값: 24, 23 y의 부호를 x에 복사한 값: -10.0 -96과 56의 절댓값: 96.0, 56.0 리스트 요소들의 합: 42.13999999999999 24와 56의 최대공약수(GCD): 8 숫자가 아닙니다 무한대입니다 False True
참고로 일반적인 sum() 대신 fsum()을 사용하면 부동소수점 연산 오차를 줄여 더 정확한 결과를 얻을 수 있습니다.
거듭제곱 및 로그 함수
아래 함수들은 거듭제곱과 로그 관련 계산을 수행하는 데 사용됩니다.
| 번호 | 함수 & 설명 |
|---|---|
| 1 | pow(x, y) x의 y제곱(x^y) 값을 반환합니다. |
| 2 | sqrt(x) x의 제곱근을 구합니다. |
| 3 | exp(x) e의 x제곱(e^x) 값을 구합니다. 여기서 e ≈ 2.718281 |
| 4 | log(x[, base]) 지정한 밑(base)을 기준으로 한 로그 값을 반환합니다. 밑을 생략하면 기본값은 자연상수 e입니다. |
| 5 | log2(x) 밑이 2인 로그 값을 반환합니다. |
| 6 | log10(x) 밑이 10인 로그 값을 반환합니다. |
예제 코드
import math
print('5^8의 값: ' + str(math.pow(5, 8)))
print('400의 제곱근: ' + str(math.sqrt(400)))
print('e^5의 값: ' + str(math.exp(5)))
print('밑이 5인 Log(625)의 값: ' + str(math.log(625, 5)))
print('밑이 2인 Log(1024)의 값: ' + str(math.log2(1024)))
print('밑이 10인 Log(1024)의 값: ' + str(math.log10(1024)))
실행 결과
5^8의 값: 390625.0 400의 제곱근: 20.0 e^5의 값: 148.4131591025766 밑이 5인 Log(625)의 값: 4.0 밑이 2인 Log(1024)의 값: 10.0 밑이 10인 Log(1024)의 값: 3.010299956639812
삼각함수 및 각도 변환 함수
아래 함수들은 다양한 삼각 연산을 수행하는 데 사용됩니다. 삼각함수의 인자는 라디안(radian) 단위라는 점에 유의하세요.
| 번호 | 함수 & 설명 |
|---|---|
| 1 | sin(x) x(라디안)의 사인(sine) 값을 반환합니다. |
| 2 | cos(x) x(라디안)의 코사인(cosine) 값을 반환합니다. |
| 3 | tan(x) x(라디안)의 탄젠트(tangent) 값을 반환합니다. |
| 4 | asin(x) 사인의 역함수(아크사인)입니다. acos, atan 역시 동일한 방식으로 제공됩니다. |
| 5 | degrees(x) 라디안 단위의 각도 x를 도(degree) 단위로 변환합니다. |
| 6 | radians(x) 도(degree) 단위의 각도 x를 라디안 단위로 변환합니다. |
예제 코드
import math
print('Sin(60도)의 값: ' + str(math.sin(math.radians(60))))
print('cos(pi)의 값: ' + str(math.cos(math.pi)))
print('tan(90도)의 값: ' + str(math.tan(math.pi/2)))
print('sin(0.8660254037844386)의 각도: ' + str(math.degrees(math.asin(0.8660254037844386))))
실행 결과
Sin(60도)의 값: 0.8660254037844386 cos(pi)의 값: -1.0 tan(90도)의 값: 1.633123935319537e+16 sin(0.8660254037844386)의 각도: 59.99999999999999
tan(90°)의 결과가 매우 큰 값으로 출력되는 이유는 파이썬이 π/2를 근사적으로 표현하기 때문입니다. 수학적으로는 90도에서 탄젠트가 무한대가 되어야 하지만, 부동소수점 연산의 한계로 인해 아주 큰 유한한 값이 반환됩니다. 마찬가지로 asin()의 역변환 결과가 60도가 아닌 59.99999999999999로 나오는 것도 같은 원리입니다.