본문 바로가기
실버를 위한 코딩/파이썬

[파이썬] 데시멀(Decimal) 타입 사용, 10진 소수점 연산

by forSilver 2024. 5. 30.
반응형

10진 소수점 연산

10진 소수점 연산은 컴퓨터에서 소수를 보다 정확하게 계산하기 위해 10진법을 사용하는 방법입니다. 부동소수점 연산에서는 이진법을 사용하여 소수를 표현하는데, 이는 일부 소수를 정확히 표현하지 못해 미세한 오차가 발생합니다. decimal 모듈은 이러한 문제를 해결하기 위해 10진법을 사용하여 소수를 표현하고 연산합니다. 이 방식은 금융 계산이나 정밀도가 중요한 계산에서 특히 유용합니다. Decimal 객체는 부동소수점 오차 없이 정확한 계산 결과를 제공하며, 이를 통해 더 신뢰할 수 있는 연산을 수행할 수 있습니다.

10진 소수점 연산에 쓰이는 Decimal 클래스 적용 사례

코드 설명

from decimal import Decimal

result = Decimal("0.1") + Decimal("0.2")
print(result)
  1. 모듈 임포트:
    • decimal 모듈에서 Decimal 클래스를 임포트 합니다. decimal 모듈은 소수점 계산의 정확도를 높이기 위해 고안된 모듈로, 부동소수점 계산에서 발생할 수 있는 오차를 피할 수 있습니다.
    • from decimal import Decimal
  2. Decimal 객체 생성 및 덧셈:
    • Decimal 객체를 생성할 때 문자열을 인자로 전달하여 0.10.2를 정확하게 표현합니다.
    • Decimal 객체를 더합니다. Decimal 객체는 부동소수점 대신 정확한 소수점 계산을 보장합니다.
    • result = Decimal("0.1") + Decimal("0.2")
  3. 결과 출력:
    • 덧셈 결과를 출력합니다. Decimal 객체 간의 연산은 정확한 소수점 결과를 반환합니다.
    • print(result)

결과

  • 출력: 0.3
    • Decimal("0.1") + Decimal("0.2")의 결과는 정확히 0.3이 됩니다. 이는 일반적인 부동소수점 연산(예: 0.1 + 0.2)에서 발생할 수 있는 미세한 오차를 방지합니다.

부동소수점과 Decimal의 차이

  • 부동소수점(Floating Point):
    • 컴퓨터에서는 실수를 이진 부동소수점 형식으로 표현하는데, 이는 정확히 0.1이나 0.2 같은 값을 표현하지 못해 오차가 발생할 수 있습니다.
    • 예: 0.1 + 0.2의 결과는 0.30000000000000004와 같은 값이 될 수 있습니다.
  • Decimal 모듈:
    • Decimal 모듈은 10진 소수점 연산을 지원하여 정확한 계산 결과를 제공합니다.
    • 이는 금융 계산이나 정확한 소수점 계산이 필요한 경우에 매우 유용합니다.
    • 예: Decimal("0.1") + Decimal("0.2")의 결과는 정확히 0.3입니다.

요약

  • 파이썬의 decimal 모듈을 사용하면 부동소수점 오차 없이 정확한 소수점 연산을 수행할 수 있습니다.
  • 문자열을 사용하여 Decimal 객체를 생성함으로써, 소수점 값을 정확하게 표현하고 계산할 수 있습니다.
  • 이러한 기능은 특히 금융 계산이나 정밀도가 중요한 계산에 유용합니다.

이 예제는 decimal 모듈을 사용하여 부동소수점 연산의 한계를 극복하고 정확한 소수점 계산을 수행하는 방법을 보여줍니다.