fractions — 유리수

fractions — 유리수

fractions 모듈은 유리수 산술을 지원합니다. Fraction 인스턴스는 유리수 쌍, 단일 숫자, 또는 문자열로 구성할 수 있습니다.

출처: Python documentation

본문

class fractions.Fraction(numerator=0, denominator=1), class fractions.Fraction(number), class fractions.Fraction(string) — 세 가지 생성자 형식이 있습니다.

첫 번째 버전은 numeratordenominatornumbers.Rational의 인스턴스여야 하며, 값이 numerator/denominator와 같은 새 Fraction 인스턴스를 반환합니다. 분모가 0이면 ZeroDivisionError를 발생시킵니다.

두 번째 버전은 numbernumbers.Rational의 인스턴스이거나 as_integer_ratio() 메서드가 있어야 하며(float와 decimal.Decimal 포함), 정확히 같은 값의 Fraction 인스턴스를 반환합니다. as_integer_ratio() 메서드가 서로소인 정수 쌍을 반환할 것으로 가정합니다. 이진 소수점의 일반적인 문제 때문에 Fraction(1.1)의 인자는 정확히 11/10이 아니므로 Fraction(1.1)이 예상처럼 Fraction(11, 10)을 반환하지 않는 점에 주의하세요(하지만 아래 limit_denominator() 문서 참조).

마지막 생성자 버전은 문자열을 기대합니다. 일반적인 형식:

[sign] numerator ['/' denominator]

여기서 선택적 sign'+' 또는 '-'일 수 있고, numeratordenominator(있으면)는 십진 숫자 문자열입니다(코드의 정수 리터럴처럼 밑줄로 자릿수를 구분할 수 있음). 또한 float 생성자가 받아들이는 유한 값을 나타내는 모든 문자열은 Fraction 생성자도 받아들입니다. 입력 문자열에는 앞뒤 공백이 있을 수 있습니다.

예제:

>>> from fractions import Fraction
>>> Fraction(16, -10)
Fraction(-8, 5)
>>> Fraction(123)
Fraction(123, 1)
>>> Fraction()
Fraction(0, 1)
>>> Fraction('3/7')
Fraction(3, 7)
>>> Fraction(' -3/7 ')
Fraction(-3, 7)
>>> Fraction('1.414213 \t\n')
Fraction(1414213, 1000000)
>>> Fraction('-.125')
Fraction(-1, 8)
>>> Fraction('7e-6')
Fraction(7, 1000000)
>>> Fraction(2.25)
Fraction(9, 4)
>>> Fraction(1.1)
Fraction(2476979795053773, 2251799813685248)
>>> from decimal import Decimal
>>> Fraction(Decimal('1.1'))
Fraction(11, 10)

Fraction 클래스는 추상 기본 클래스 numbers.Rational에서 상속하며 그 클래스의 모든 메서드와 연산을 구현합니다. Fraction 인스턴스는 해시 가능하며 불변으로 취급해야 합니다.

버전 변경: 3.2에서 생성자가 floatdecimal.Decimal 인스턴스를 받게 됨. 3.9에서 math.gcd() 함수가 분자와 분모를 정규화하는 데 사용되며 math.gcd()는 항상 int 타입을 반환함(이전에는 GCD 타입이...).

Fraction에는 limit_denominator(max_denominator=1000000)과 같은 유용한 속성과 메서드가 있습니다. limit_denominator()는 분모가 max_denominator 이하인 가장 가까운 유리수를 찾아 float 값의 근사 유리수 표현을 얻는 데 유용합니다. numeratordenominator 속성으로 분자와 분모에 접근할 수 있으며, 분자와 분모는 서로소로 유지됩니다.

유리수는 정확한 산술을 요구하는 금융 계산, 측정 분할, 확률 계산 등에서 정수 비율을 정확히 나타내는 데 사용됩니다. Fraction은 float의 근사 오차 없이 분수 연산을 수행하고 싶을 때 특히 유용합니다.

더 알아보기 (Learn more)