분수로 분수(유리수) 계산하기

사업

표준 Python 라이브러리의 fractions 모듈을 사용하여 분수(유리수)로 계산을 수행할 수 있습니다.

여기에서는 다음을 설명합니다.

  • 분수의 생성자
  • 분자 및 분모 값을 정수로 가져오기
  • 분수 계산 및 비교(유리수)
  • 분수를 소수로 변환(float)
  • 분수에서 문자열로(str) 변환
  • 유리수 근사값 구하기

분수의 생성자

Fraction 인스턴스를 만드는 방법에는 여러 가지가 있습니다. 모든 경우에 분수는 자동으로 분수로 나뉩니다.

분자와 분모를 정수로 지정

분자와 분모를 각각 정수로 지정합니다. 분모가 생략되면 1로 간주됩니다.

from fractions import Fraction

print(Fraction(1, 3))
# 1/3

print(Fraction(2, 6))
# 1/3

print(Fraction(3))
# 3

소수(float)

분수 값이 전달되면 분수로 변환됩니다.

print(Fraction(0.25))
# 1/4

print(Fraction(0.33))
# 5944751508129055/18014398509481984

최대 분모를 지정하여 근사화하려면 아래에 설명된 limit_denominator() 메서드를 사용하십시오.

문자열(str)

문자열 값이 전달되면 분수로 변환됩니다.

print(Fraction('2/5'))
# 2/5

print(Fraction('16/48'))
# 1/3

분자 및 분모 값을 정수로 가져오기

Fraction 유형의 속성을 사용하면 분자와 분모 각각에 대한 정수 값을 얻을 수 있습니다. 변경할 수 없습니다.

  • numerator
  • denominator
a = Fraction(1, 3)
print(a)
# 1/3

print(a.numerator)
print(type(a.numerator))
# 1
# <class 'int'>

print(a.denominator)
print(type(a.denominator))
# 3
# <class 'int'>

# a.numerator = 7
# AttributeError: can't set attribute

분수 계산 및 비교(유리수)

산술 연산자를 사용하여 더하기, 빼기 등을 계산할 수 있습니다.

result = Fraction(1, 6) ** 2 + Fraction(1, 3) / Fraction(1, 2)
print(result)
print(type(result))
# 25/36
# <class 'fractions.Fraction'>

비교 연산자도 사용할 수 있습니다.

print(Fraction(7, 13) > Fraction(8, 15))
# True

분수를 소수로 변환(float)

float()를 사용하여 분수에서 소수로 변환할 수 있습니다.

a_f = float(a)
print(a_f)
print(type(a_f))
# 0.3333333333333333
# <class 'float'>

10진수로 계산하면 자동으로 float형으로 변환된다.

b = a + 0.1
print(b)
print(type(b))
# 0.43333333333333335
# <class 'float'>

분수에서 문자열로(str) 변환

문자열로 변환하려면 str()을 사용하십시오.

a_s = str(a)
print(a_s)
print(type(a_s))
# 1/3
# <class 'str'>

유리수 근사값 구하기

유리수 근사는 Fraction 유형의 limit_denominator() 메서드를 사용하여 얻을 수 있습니다.

분모가 인수 max_denominator보다 작거나 같은 유리수(분수)를 반환합니다. 생략하면 max_denominator=1000000입니다.

파이 및 네이피어 수 e와 같은 대략적인 무리수

pi = Fraction(3.14159265359)
print(pi)
# 3537118876014453/1125899906842624

print(pi.limit_denominator(10))
print(pi.limit_denominator(100))
print(pi.limit_denominator(1000))
# 22/7
# 311/99
# 355/113

e = Fraction(2.71828182846)
print(e)
# 6121026514870223/2251799813685248

print(e.limit_denominator(10))
print(e.limit_denominator(100))
print(e.limit_denominator(1000))
# 19/7
# 193/71
# 1457/536

원형 소수를 분수로 변환

a = Fraction(0.565656565656)
print(a)
# 636872674577009/1125899906842624

print(a.limit_denominator())
# 56/99

a = Fraction(0.3333)
print(a)
# 6004199023210345/18014398509481984

print(a.limit_denominator())
print(a.limit_denominator(100))
# 3333/10000
# 1/3
Copied title and URL