00 개요
- Decimal은 Python의 decimal 모듈에서 제공하는 데이터 타입으로, 소수점 숫자를 정확하게 처리할 수 있는 도구 제공
- Decimal 타입은 특히 금융 계산이나 정밀한 수치 연산이 필요한 경우에 유용함
01 Decimal이란
1. 정의
- 소수점 이하 자릿수를 정확하게 저장하고 계산할 수 있도록 설계된 데이터 타입
- 부동 소수점 숫자의 근사 오차를 피하고, 높은 정밀도로 숫자를 다룰 수 있음
2. 주요 특징
- 정확한 표현: Decimal은 소수점 이하 자릿수를 정확히 표현 가능
- 설정 가능한 정밀도: 사용자가 소수점 자리수와 전체 자리수를 설정할 수 있음
- 부동 소수점 문제 방지: 부동 소수점 숫자는 이진수로 근사값을 저장하기 때문에, 계산 과정에서 오차가 발생할 수 있지만, Decimal은 이러한 오차를 방지함
3. 사용 이유
- Decimal은 소수점 숫자의 정확한 표현과 계산을 보장하는 데이터 타입으로, 금융, 과학적 계산 등에서 필요한 정밀도와 정확성을 제공
4. 부동 소수점 계산에서의 오차 예시
# 부동 소수점 계산 예시
# 0.1과 0.2를 더한 결과 출력
result = 0.1 + 0.2
print(f"0.1 + 0.2 = {result}") # 0.1 + 0.2 = 0.30000000000000004
# 결과를 포맷팅하여 소수점 17자리까지 출력
print(f"0.1 + 0.2 (17 decimal places) = {result:.17f}") # 0.1 + 0.2 (17 decimal places) = 0.30000000000000004
- 설명
- 근본 원인: 0.1과 0.2는 이진수로 정확히 표현할 수 없는 숫자임. 부동 소수점 수치는 이진수로 근사값으로 저장되기 때문에, 계산 결과에 미세한 오차가 포함될 수 있음
- 결과: 0.1 + 0.2의 결과는 0.30000000000000004로 나타남. 이는 기대한 0.3과 약간의 차이가 있는 결과임.'
- 포맷팅: :.17f를 사용하여 소수점 17자리까지 결과를 포맷팅하면, 이 오차를 명확히 확인 가능. 실제로는 오차가 매우 미세하지만, 정밀한 계산에서는 문제가 될 수 있음. 부동 소수점 오차는 과학적 계산이나 금융 애플리케이션에서 중요한 고려사항이 될 수 있음. 이런 경우 Decimal과 같은 데이터 타입을 사용하여 정확한 소수점 계산을 수행하는 것이 좋음!
5. Decimal 사용 예시
1) 간단한 덧셈
from decimal import Decimal
# Decimal 객체 생성
a = Decimal('0.1')
b = Decimal('0.2')
# 덧셈 연산
result = a + b
print(result) # 0.3
- 설명:
- Decimal을 사용하여 0.1과 0.2를 더한 결과가 정확하게 0.3으로 나타남!
- 부동 소수점 숫자에서는 이러한 계산에서 오차가 발생할 수 있지만, Decimal은 이를 방지!
2) 정밀도 설정
from decimal import Decimal, getcontext
# 소수점 자리수 설정
getcontext().prec = 6 # 총 6자리의 정밀도
# Decimal 객체 생성
number = Decimal('0.123456')
# 계산
result = number * 2
print(result) # 0.246912
- 설명: 정밀도를 설정하여 계산 결과가 예상대로 출력!
'Python > 기본문법' 카테고리의 다른 글
zip() (파이썬 함수) (0) | 2024.09.30 |
---|---|
메소드 오버라이드 (Method Override)란 (메소드 재정의) (0) | 2024.09.30 |
f.tell() (파이썬 파일 처리 함수) (0) | 2024.08.09 |
f.seek() (파이썬 파일 처리 함수) (0) | 2024.08.09 |
위치 인수, 키워드 인수 (파이썬 함수의 인수 종류) (0) | 2024.08.04 |