Tính phân số (số hữu tỉ) với phân số

Kinh doanh

Sử dụng mô-đun phân số của thư viện Python chuẩn, bạn có thể thực hiện các phép tính với phân số (số hữu tỉ).

Sau đây là giải thích ở đây.

  • Hàm tạo của phân số
  • Nhận giá trị tử số và mẫu số dưới dạng số nguyên
  • Tính toán và so sánh phân số (số hữu tỉ)
  • Chuyển phân số thành số thập phân (float)
  • Chuyển đổi phân số thành chuỗi (str)
  • Nhận gần đúng số hữu tỉ

Hàm tạo của phân số

Có một số cách để tạo một cá thể Phân số. Trong mọi trường hợp, phân số được tự động chia thành phân số.

Chỉ định tử số và mẫu số là số nguyên

Chỉ định tử số và mẫu số tương ứng là số nguyên. Nếu mẫu số bị bỏ qua, nó được giả định là 1.

from fractions import Fraction

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

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

print(Fraction(3))
# 3

phần thập phân(float)

Nếu một giá trị phân số được chuyển qua, nó sẽ được chuyển đổi thành phân số.

print(Fraction(0.25))
# 1/4

print(Fraction(0.33))
# 5944751508129055/18014398509481984

Nếu bạn muốn tính gần đúng bằng cách chỉ định một mẫu số lớn nhất, hãy sử dụng phương thức limit_denominator () được mô tả bên dưới.

chuỗi ký tự(str)

Nếu một giá trị chuỗi được chuyển, nó sẽ được chuyển đổi thành một phân số.

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

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

Nhận giá trị tử số và mẫu số dưới dạng số nguyên

Các thuộc tính của kiểu Phân số cho phép bạn nhận các giá trị nguyên cho tử số và mẫu số tương ứng. Chúng không thể thay đổi được.

  • 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

Tính toán và so sánh phân số (số hữu tỉ)

Các toán tử số học có thể được sử dụng để tính toán cộng, trừ, v.v.

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

Các toán tử so sánh cũng có thể được sử dụng.

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

Chuyển phân số thành số thập phân (float)

Có thể chuyển đổi từ phân số sang số thập phân với float ().

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

Khi được tính toán với một số thập phân, nó sẽ tự động được chuyển đổi thành kiểu float.

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

Chuyển đổi phân số thành chuỗi (str)

Để chuyển đổi thành một chuỗi, hãy sử dụng str ().

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

Nhận gần đúng số hữu tỉ

Có thể thu được một số gần đúng với phương thức limit_denominator () của kiểu Fraction.

Trả về số hữu tỉ (phân số) có mẫu số nhỏ hơn hoặc bằng đối số max_denominator. Nếu bỏ qua, max_denominator = 1000000.

Các số vô tỉ gần đúng như số pi và số Napier 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

Chuyển đổi số thập phân tròn thành phân số

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