Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python 유리수(분수)

<시간/>

p/q의 형태로 몫이나 분수로 표현할 수 있는 모든 수를 유리수라고 합니다. Python 라이브러리의 fractions 모듈은 유리수 연산 기능을 제공합니다.

이 모듈은 Fraction 클래스를 정의합니다. 그 객체는 아래와 같이 다양하게 구성될 수 있다 -

Fraction(num, denom)

Fraction 생성자의 첫 번째 버전은 분자와 분모에 대해 두 개의 매개변수를 받습니다. 기본 분자는 0이고 기본 분모는 1입니다. 분모 값 =0이면 ZeroDivisionError가 발생합니다.

>>> from fractions import Fraction
>>> n1 = Fraction(2,5)
>>> n1
Fraction(2, 5)
>>> n2 = Fraction(6,15)
>>> n2
Fraction(2, 5)
>>> n3 = Fraction(10,1)
>>> n3
Fraction(10, 1)
>>> n3 = Fraction(10)
>>> n3
Fraction(10, 1)

분자 및 분모 매개변수는 공통 인수로 나눈 후 최소값으로 축소됩니다.

분수 생성자는 유효한 숫자 표현을 포함하는 경우 문자열 매개변수를 받을 수도 있습니다.

>>> n1 = Fraction('5')
>>> n1
Fraction(5, 1)
>>> n2 = Fraction('4/7')
>>> n2
Fraction(4, 7)
>>> n3 = Fraction('0.25')
>>> n3
Fraction(1, 4)
>>> n4 = Fraction('1.23E4')
>>> n4
Fraction(12300, 1)

부동 소수점 숫자는 생성자에 대한 매개변수가 될 수도 있습니다. 그러나 순수 이진 형식의 float 표현으로 인해 결과 Fraction 객체의 분자와 분모의 몫이 정확하지 않을 수 있습니다. 반면 Decimal 클래스의 객체를 매개변수로 사용하면 Fraction 객체도 생성됩니다.

>>> from fractions import Fraction
>>> from decimal import Decimal
>>> n1 = Fraction(2.1)
>>> n1
Fraction(4728779608739021, 2251799813685248)
>>> n2 = Fraction(Decimal('2.1'))
>>> n2
Fraction(21, 10)

모든 산술 연산은 Fraction 개체에 허용됩니다.

>>> n1 = Fraction(2,3)
>>> n2 = Fraction(1,2)
>>> n1+n2
Fraction(7, 6)
>>> n1-n2
Fraction(1, 6)
>>> n1*n2
Fraction(1, 3)
>>> n1/n2
Fraction(4, 3)

난수 산술이 몫 형식으로 수행되는 방식을 상기하기 위해 -

Python 유리수(분수)

Fraction 객체는 분자와 분모의 두 가지 속성을 가지며 독립적으로 접근할 수 있습니다.

>>> n1 = Fraction(2,3)
>>> n1.numerator
2
>>> n1.denominator
3

Fraction 클래스에는 몫보다 작은 가장 큰 정수(하한 값)와 몫보다 큰 가장 작은 정수(상한 값)를 찾는 데 유용한 다음과 같은 메서드가 있습니다.

>>> n1 = Fraction(355,113)
>>> n1.__floor__()
3
>>> n1.__ceil__()
4

또 다른 클래스 메서드인 limit_denominator()는 지정된 값과 최대 분모가 같은 가장 가까운 분수를 반환합니다.

>>> Fraction('2.71828').limit_denominator(400)
Fraction(1071, 394)

이 기사에서는 Python 표준 라이브러리의 fractions 모듈에 있는 기능과 기능에 대해 논의했습니다.