본문 바로가기
재밌는 수학 퀴즈와 문제

파이썬의 decimal.Decimal 클래스를 사용한 정밀한 실수 연산

by silvermath 2025. 4. 24.
반응형

파이썬의 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)  # 정확한 계산