[Python] math 모듈

Hyunji·2022년 3월 1일
0

Python

목록 보기
3/13
post-thumbnail

복잡한 연산이 필요한 경우에는 math 모듈을 사용한다.

정수 관련 함수

math 모듈을 사용하기 전에는 math 모듈부터 import 해야한다.

import math

math.ceil(3.14)

math.ceil(3.14)

#4
  • '올림' 함수
  • 인자는 하나만 필요로 함
  • 소수점을 올림하여 정수로 만드는 것

math.copysign(3.14, -3)

math.copysign(3.14, -3)

#-3.14
  • 두 번째 인자의 부호만 취해 첫 번째 인자에 적용 (부호만 취하는 경우는 생각보다 많음)

math.fabs(-3.14)

math.fabs(-3.14)

#3.14
  • 절댓값을 반환

math.factorial(5)

math.factorial(5)

# 120
  • 팩토리얼 함수
  • 팩토리얼은 1부터 인자로 주어진 값까지 모두 곱하는 값을 반환
  • 위의 경우는 12345 를 계산한 것

math.floor(3.78)

math.floor(3.78)

#3
  • '내림' 함수
  • 한 개 인자만 취하며 결국 소수점을 내려 정수로 만듬
  • 0에 가깝게 내리는 것이 아니라 그냥 작은 값으로 내린다

math.frexp(100)

math.frexp(100)
(0.78125, 7)
0.78125*2**7

# 100.0
  • 입력받은 값이 m * 2**e 와 같은 값을 가지는 m과 e를 반환함
  • 예를 들어 100을 인자로 넣으면 (0.78125, 7)을 반환하는데

math.ldexp(0.78125, 7)

math.ldexp(0.78125, 7)

# 100
  • math.frexp() 의 반대
  • m2*e 에 각각 대입되어 계산되어 값을 반환받음
  • m이 첫 번째 인자이고 e가 두 번째 인자

math.gcd(6,8)

math.gcd(6,8)

# 2
  • 두 수의 최대 공약수를 반환

math.modf(3.14)

math.modf(3.14)

# (0.14000000000000012, 3.0)
  • math.modf() 함수는 입력값을 저수와 소수 부분으로 분리해 반환
  • 위의 경우 소수가 0.14가 아니라 긴 소수값이 출력되는데 이는 부동소수점 문제이다
  • 부동 소수점은 10진법 수를 2진법 체계에서 정확히 반영하지 못해 생기는 문제이다
  • modf() 함수는 부동소수점의 값을 그대로 반환함

math.trunc(3.14)

math.trunc(3.14)

# 3
  • '내림' 함수
  • math.floor 와 비슷해 보이지만 다르다
    아래 예시를 보자
math.trunc(-3.14)
math.floor(-3.14)

# -3
# -4
  • trunc() 함수는 0으로 향하지만
  • floor() 함수는 무조건 아래로만 향함

로그 함수와 제곱

math.log(10,10)

math.log(10,10)

# 1
  • math.log(a,b) 는 로그 함수
  • b를 밑으로 하는 log a에 대한 로그 값을 리턴함

math.log1p(x)

math.log1p(x)
  • e를 밑으로 하는 x+1 로그

math.log2(x)

math.log2(x)
  • 2를 밑으로 하는 x로그

math.log10()

math.log10()
  • 10을 밑으로 하는 x로그

math.pow(x,y)

math.pow(3,2)

# 9
  • math.pow(x,y) 는 x에 y 승을 계산한 결괏값을 반환

math.sqrt(n)

math.sqrt(25)

# 5.0
  • 제곱근의 값을 반환

삼각함수

math.acos(x) # 아크코사인
math.asin(x) # 아크사인
math.atan(x) # 아크탄젠트
math.atan2(y,x) # y/x 아크탄젠트
math.cos(x) # 코사인
math.sin(x) # 사인
math.tan(x) # 탄젠트

각도 변환

math.degrees(x)

# 라디안으로 표현된 각도를 60분법 각도로 변환

math.radians(x)
# 60분법으로 표현된 각도를 라디안 각도로 변환

https://wikidocs.net/21116

profile
성장중인 개발자

0개의 댓글