파이썬 나눗셈(Python Division)은 파이썬에서 숫자를 나누는 연산을 의미하며, 다양한 연산자와 내장 함수를 제공한다. 기본적으로 파이썬에서는 정수 나눗셈과 실수 나눗셈을 구분하며, 나머지를 구하는 연산도 지원한다.
나눗셈 연산자
파이썬에서는 다음과 같은 연산자를 사용하여 나눗셈을 수행할 수 있다.
- 실수 나눗셈 (`/`)
- 두 수를 나눈 후 결과를 부동소수점(float) 값으로 반환한다.
- 정수끼리 나누더라도 결과는 실수(`float`)로 나온다.
- 예제:
print(10 / 3) # 출력: 3.3333333333333335
print(10 / 2) # 출력: 5.0
- 정수 나눗셈 (`//`)
- 몫만 반환하며, 결과는 정수(int) 또는 실수(float) 타입이 될 수 있다.
- 예제:
print(10 // 3) # 출력: 3
print(10 // 2) # 출력: 5
print(10.5 // 2) # 출력: 5.0
- 나머지 연산 (`%`)
- 나눗셈의 나머지를 반환한다.
- 예제:
print(10 % 3) # 출력: 1
print(10 % 2) # 출력: 0
- 몫과 나머지를 동시에 반환 (`divmod()`)
- `divmod(a, b)` 함수는 (몫, 나머지) 형태의 튜플을 반환한다.
- 예제:
print(divmod(10, 3)) # 출력: (3, 1)
print(divmod(20, 7)) # 출력: (2, 6)
나눗셈 연산자의 동작 방식
정수 나눗셈과 실수 나눗셈의 차이
- `/` 연산자는 정수끼리 나누더라도 항상 float 결과를 반환한다.
- `//` 연산자는 소수점을 버리고 정수만 반환한다.
예제:
a = 7
b = 2
print(a / b) # 출력: 3.5 (실수 나눗셈)
print(a // b) # 출력: 3 (정수 나눗셈)
음수 나눗셈
음수를 포함한 나눗셈에서는 결과가 다르게 나타날 수 있다.
예제:
print(-10 / 3) # 출력: -3.3333333333333335
print(-10 // 3) # 출력: -4
print(-10 % 3) # 출력: 2 # 파이썬의 나머지 연산은 부호가 나눠지는 수와 다를 수 있음
정수 나눗셈(`//`)은 항상 내림(floor) 방향으로 반올림되므로, 음수에서는 절댓값이 더 큰 방향으로 결과가 나올 수 있다.
나눗셈 관련 예외 처리
0으로 나누기 (ZeroDivisionError)
0으로 나누는 경우 오류가 발생한다.
print(10 / 0) # ZeroDivisionError: division by zero
이를 방지하려면 예외 처리를 사용해야 한다.
try:
result = 10 / 0
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
부동소수점 오차
실수형 데이터를 나눌 때, 부동소수점 연산의 한계로 인해 정확한 결과가 나오지 않을 수 있다.
print(0.1 + 0.2) # 출력: 0.30000000000000004
이런 문제를 해결하려면 `decimal` 또는 `fractions` 모듈을 사용할 수 있다.
나눗셈 관련 모듈
- math 모듈
- `math.floor()` : 내림 연산
- `math.ceil()` : 올림 연산
- `math.trunc()` : 소수점 이하 절삭
예제:
import math
print(math.floor(3.7)) # 출력: 3
print(math.ceil(3.7)) # 출력: 4
print(math.trunc(3.7)) # 출력: 3
- decimal 모듈
- 부동소수점 오차를 방지하고, 정확한 소수 계산을 수행하는 데 사용된다.
예제:
from decimal import Decimal
a = Decimal("0.1")
b = Decimal("0.2")
print(a + b) # 출력: 0.3
- fractions 모듈
- 분수 형태로 연산을 수행할 수 있다.
예제:
from fractions import Fraction
a = Fraction(1, 3)
b = Fraction(2, 3)
print(a + b) # 출력: 1