본문 바로가기

언어/Python

[ Python ] 정밀한 계산에 Fraction으로 분수를 사용하기

반응형

Fraction 객체는 파이썬의 fractions 모듈에서 제공하는 클래스입니다. 이 클래스는 분수를 정확하게 표현하고, 분수 연산을 할 때 유용합니다. Fraction 객체는 두 정수(분자와 분모)로 분수를 표현하며, 수학적인 분수 연산을 수행할 때 부동소수점 연산의 오차를 피할 수 있습니다.

주요 특징 및 사용법

  1. Fraction 객체 생성:
    • Fraction 객체는 두 개의 정수(분자와 분모)를 인자로 받아 생성할 수 있습니다.
    • 분자가 하나만 주어지면 분모는 1로 간주됩니다.
from fractions import Fraction

f1 = Fraction(3, 4)  # 3/4
f2 = Fraction(5)     # 5/1
f3 = Fraction(1, 3)  # 1/3
  1. 자동 약분:
    • Fraction 객체는 생성 시 자동으로 약분됩니다. 예를 들어 Fraction(8, 4)Fraction(2, 1)로 표현됩니다.
from fractions import Fraction

f = Fraction(8, 4)
print(f)  # 출력: 2
  1. 문자열이나 부동소수점에서 생성:
    • Fraction 객체는 문자열이나 부동소수점 숫자를 인자로 받아 생성할 수도 있습니다. 이 경우 문자열은 분수로, 부동소수점은 해당 숫자와 동일한 분수로 변환됩니다.
from fractions import Fraction

f1 = Fraction('3/4')
f2 = Fraction('0.75')
f3 = Fraction(0.5)

print(f1)  # 출력: 3/4
print(f2)  # 출력: 3/4
print(f3)  # 출력: 1/2
  1. 분수 연산:
    • Fraction 객체는 덧셈, 뺄셈, 곱셈, 나눗셈 등 모든 기본 산술 연산을 지원합니다. 이러한 연산의 결과도 Fraction 객체로 반환됩니다.
from fractions import Fraction

f1 = Fraction(1, 2)
f2 = Fraction(3, 4)

result_add = f1 + f2  # 1/2 + 3/4 = 5/4
result_sub = f1 - f2  # 1/2 - 3/4 = -1/4
result_mul = f1 * f2  # 1/2 * 3/4 = 3/8
result_div = f1 / f2  # 1/2 ÷ 3/4 = 2/3

print(result_add)  # 출력: 5/4
print(result_sub)  # 출력: -1/4
print(result_mul)  # 출력: 3/8
print(result_div)  # 출력: 2/3
  1. 유리수 근사:
    • 부동소수점 숫자를 Fraction으로 변환하면, 해당 숫자와 가장 근사한 분수로 변환됩니다.
from fractions import Fraction

f = Fraction(2.75)
print(f)  # 출력: 11/4
  1. 프로퍼티:
    • Fraction 객체는 numeratordenominator 프로퍼티를 통해 분자와 분모에 접근할 수 있습니다.
from fractions import Fraction

f = Fraction(5, 8)
print(f.numerator)   # 출력: 5
print(f.denominator) # 출력: 8
  1. 소수점과의 상호 변환:
    • Fraction 객체는 소수점으로 변환이 가능하며, 반대로 소수점에서 분수로 변환할 수도 있습니다.
from fractions import Fraction

f = Fraction(1, 3)
float_value = float(f)
print(float_value)  # 출력: 0.3333333333333333

f_from_float = Fraction(float_value)
print(f_from_float)  # 출력: 6004799503160661/18014398509481984
  • 이처럼 부동소수점에서 생성된 Fraction은 정확히 동일한 부동소수점을 표현하는 분수로 변환됩니다.
  1. 응용 예:
    • Fraction 객체는 계산의 정확도가 중요한 경우, 특히 수학적, 과학적, 금융적 계산에서 매우 유용합니다.
    • 예를 들어, 복잡한 분수 계산에서 부동소수점 연산 오차를 피할 수 있습니다.

Fraction의 활용 예

  • 정밀한 수학적 계산이 필요한 경우
  • 단위 변환에서 분수 표현이 유리한 경우
  • 교육적인 목적으로 분수의 개념을 프로그래밍에서 사용할 때

Fraction 객체는 floatDecimal 객체와 비교하여 정밀한 수학적 연산을 쉽게 처리할 수 있게 해줍니다.

반응형