반응형
파이썬의 decimal.Decimal 클래스를 사용한 정밀한 실수 연산
이 스크린샷은 파이썬의 decimal.Decimal 클래스를 사용한 정밀한 실수 연산 예제를 보여줍니다.
일반 float 대신 Decimal을 쓰면 오차 없이 정확한 수치 계산이 가능합니다. 아래에서 자세히 정리합니다.

✅ 핵심: decimal.Decimal을 사용한 고정소수점 연산
🔹 1. 누적 합 (for 루프)
e = Decimal('0.0')
delta = Decimal('0.1')
for k in range(1000):
e += delta
- delta = Decimal('0.1')
- Decimal을 사용한 반복 덧셈 → 정확히 100.0 도출
- float를 사용하면 누적 오차 발생 → 99.99999999999997 같은 결과 나올 수 있음
🔹 2. 기본 사칙연산
a = Decimal('35.72')
b = Decimal('1.73')
a + b → Decimal('37.45')
a - b → Decimal('33.99')
a * b → Decimal('61.7956')
a / b → Decimal('20.6473...')
a // b → Decimal('20')
a % b → Decimal('1.12')
a ** b → Decimal('485.88871...')
| + | 덧셈 | 37.45 |
| - | 뺄셈 | 33.99 |
| * | 곱셈 | 61.7956 |
| / | 나눗셈 (정밀) | 20.6473988439... |
| // | 정수 나눗셈 | 20 |
| % | 나머지 | 1.12 |
| ** | 거듭제곱 | 485.8887109688... |
📌 Decimal vs float 차이
| 항목 | float | Decimal |
| 표현 방식 | 이진 부동소수 | 십진 고정소수 |
| 정밀도 | 제한 있음 (오차 발생) | 매우 정확 |
| 용도 | 속도 중시 계산 | 정밀 금융 계산, 과학 연산 등 |
| 예시 | 0.1 + 0.2 != 0.3 | Decimal('0.1') + Decimal('0.2') == Decimal('0.3') |
🔧 사용법 요약
from decimal import Decimal
a = Decimal('35.72')
b = Decimal('1.73')
print(a + b) # 정확한 계산
'재밌는 수학 퀴즈와 문제' 카테고리의 다른 글
| float, Decimal, Fraction의 상대적인 특성(정밀도, 속도, 사용 편의성) (1) | 2025.04.27 |
|---|---|
| Decimal, Fraction, float 세 가지 실수 표현 방식 (2) | 2025.04.26 |
| fractions.Fraction 모듈을 활용한 정확한 분수 계산 (0) | 2025.04.23 |
| 복소수의 시각화 (2) | 2025.04.22 |
| 복소수 곱하기 (3) | 2025.04.20 |