본문 바로가기
카테고리 없음

Decimal과 float 타입은 연산이 안됨

by silvermath 2025. 4. 25.
반응형

Decimal과 float 타입은 연산이 안됨

Decimal과 int 타입은 직접 연산할 수 있지만, Decimal과 float 타입을 직접 더할 수 없기 때문입니다.


🧨 오류 메시지 해석

TypeError: unsupported operand type(s) for +: 'decimal.Decimal' and 'float'
  • a + 3.2에서:
    • a는 Decimal
    • 3.2는 float
  • 파이썬은 Decimal + float을 허용하지 않음
  • 정확성 보장을 위해 서로 다른 실수 타입은 자동 변환하지 않습니다

✅ 해결 방법: 둘 다 Decimal로 통일

방법 1: 숫자를 Decimal로 변환

from decimal import Decimal

a = Decimal('35.72')
b = Decimal('3.2')

a + Decimal(b)  # 또는
a + Decimal('3.2')  # 더 안전함

방법 2: 처음부터 float 대신 문자열로 Decimal 생성

Decimal('3.2')  # ← 정확함
Decimal(3.2)    # ← float에서 변환하므로 부정확할 수 있음

📌 요약

잘못된 연산 수정 방법
Decimal + float Decimal + Decimal
a + 3.2 a + Decimal('3.2')
Decimal(3.2) Decimal('3.2') ← 더 안전함

 


🔍 참고로…

Decimal + int는 허용됩니다:

Decimal('10.5') + 2  → Decimal('12.5')