반응형
Decimal
객체는 파이썬의 decimal
모듈에서 제공하는 클래스입니다. 이 객체는 부동소수점 수의 정확성을 유지해야 하는 계산에서 매우 유용합니다. float
타입이 2진 부동소수점으로 숫자를 표현하는 반면, Decimal
객체는 10진 소수점 숫자를 정확하게 표현합니다.
주요 특징 및 사용법
- 정확성 유지:
Decimal
은 10진수 기반의 연산을 수행하므로,float
타입에서 발생할 수 있는 부정확한 표현과 연산 오류를 피할 수 있습니다.- 예를 들어, 0.1 + 0.2를
float
로 계산하면 약간의 오차가 발생하지만,Decimal
로 계산하면 정확하게 0.3을 반환합니다.
from decimal import Decimal
result = Decimal('0.1') + Decimal('0.2')
print(result) # 출력: 0.3
- 정확한 소수점 제어:
Decimal
객체는 소수점 이하 자리수를 정확하게 제어할 수 있습니다. 예를 들어, 금융 계산에서 센트 단위까지 정확히 계산할 때 유용합니다.
result = Decimal('1.00') - Decimal('0.10')
print(result) # 출력: 0.90
- 문자열 또는 정수로 초기화:
Decimal
객체를 생성할 때는 문자열이나 정수를 인자로 사용합니다. 부동소수점(float)을 직접 인자로 사용하는 것은 권장되지 않습니다.
d1 = Decimal('3.14') # 권장
d2 = Decimal(3) # 정수도 허용
- 반올림 모드:
decimal
모듈은 여러 가지 반올림 모드를 제공합니다. 예를 들어, "ROUND_HALF_UP" (일반적인 사사오입) 등을 사용할 수 있습니다.
from decimal import ROUND_HALF_UP, getcontext
getcontext().rounding = ROUND_HALF_UP
result = Decimal('1.235').quantize(Decimal('0.01'))
print(result) # 출력: 1.24
- 문맥(Context) 설정:
decimal
모듈의 문맥(context)을 통해 전역적으로 정밀도, 반올림 방식 등을 설정할 수 있습니다.
from decimal import getcontext
getcontext().prec = 6 # 소수점 이하 6자리까지 정확도 설정
result = Decimal('1.123456789') + Decimal('2.987654321')
print(result) # 출력: 4.11111
- 성능:
Decimal
객체는 높은 정확도를 제공하지만,float
타입에 비해 성능이 다소 느릴 수 있습니다. 따라서 성능이 중요한 대규모 계산에서는 신중하게 사용해야 합니다.
Decimal
객체의 활용 예
- 금융 계산: 금액 계산 시 소수점 이하의 정확성을 유지해야 하는 경우.
- 과학적 계산: 실험 데이터의 정확한 소수점 이하 자릿수 계산이 필요한 경우.
- 일반적인 정밀도가 중요한 경우: 예를 들어, 데이터 분석 시 작은 오차가 중요한 영향을 미치는 경우.
이와 같은 상황에서 Decimal
객체는 float
보다 훨씬 더 신뢰할 수 있는 결과를 제공합니다.
반응형
'언어 > Python' 카테고리의 다른 글
[ Python ] complex 클랙스를 사용해서 복소수 다루기 (0) | 2024.08.26 |
---|---|
[ Python ] 정밀한 계산에 Fraction으로 분수를 사용하기 (0) | 2024.08.25 |
[ Python ] 정확하고 오차없는 10진수 연산 - Decimal 클래스 (0) | 2024.08.21 |
[ Python ] 클래스를 상속해서 나의 클래스 만들기 (다중 상속 포함) (0) | 2024.08.13 |
[ Python ] 클래스 내에서 멤버 변수 선언하기 (지역/전역) (0) | 2024.08.13 |