Computer >> Máy Tính >  >> Lập trình >> Python

Mô-đun phân số trong Python

Trong Python, mô-đun Fraction hỗ trợ số học hữu tỉ. Sử dụng mô-đun này, chúng tôi có thể tạo phân số từ số nguyên, số thực, số thập phân và từ một số giá trị và chuỗi số khác.

Có một khái niệm về Fraction Instance. Nó được tạo thành bởi một cặp số nguyên là tử số và mẫu số.

Lớp fraction.Fraction được sử dụng để tạo một đối tượng Fraction. Nó có Numerator và Denominator. Giá trị mặc định của tử số là 0 và mẫu số là 1. Nó làm tăng ZeroDivisionError khi mẫu số là 0.

Đầu tiên, chúng ta sẽ xem cách lớp có thể tạo phân số bằng cách sử dụng Mẫu số và Mẫu số.

Mã mẫu

from fractions import Fraction as frac
print(frac(45, 54))
print(frac(12, 47))
print(frac(0, 15))

Đầu ra

5/6
12/47
0

Chúng tôi có thể cung cấp một số số dấu phẩy động làm đối số của đối tượng Fraction. Nếu chúng tôi cung cấp giá trị dấu phẩy động chính xác, nó sẽ cố gắng chuyển nó thành giá trị tử số và mẫu số của kiểu số nguyên. Trong trường hợp này, nó cố gắng đạt đến giá trị gần đúng. Nếu số dấu phẩy động được cung cấp dưới dạng một chuỗi, nó sẽ cố gắng tìm giá trị chính xác dưới dạng Phân số. Từ các ví dụ sau, bạn có thể thấy sự khác biệt.

Mã mẫu

from fractions import Fraction as frac
print(frac(33.33))
print(frac('33.33'))

Đầu ra

2345390243441541/70368744177664
3333/100

Hãy để chúng tôi xem, một số ví dụ khác về đối số kiểu chuỗi đối với đối tượng Fraction. Nó cũng hỗ trợ dấu hiệu của các con số. Nó hỗ trợ dấu + hoặc -.

Mã mẫu

from fractions import Fraction as frac
print(frac('5/6'))
print(frac('-25.12'))
print(frac('96.251 \t\n'))
print(frac('3.14159265359'))

Đầu ra

5/6
-628/25
96251/1000
314159265359/100000000000

Như chúng ta đã thấy, đôi khi mẫu số rất lớn trong đối tượng Phân số. Vì vậy, chúng ta có thể giới hạn độ dài của mẫu số. Độ dài mặc định là 1000000. Nó giúp thực hiện tính gần đúng hợp lý cho dữ liệu dấu phẩy động. Để giới hạn mẫu số, có một hàm được gọi là limit_denominator () .

Đôi khi chúng ta chỉ muốn có tử số hoặc mẫu số mà không muốn toàn bộ đối tượng phân số. Vì vậy, phương pháp này có từ khóa tử số và mẫu số để lấy chúng.

Mã mẫu

from fractions import Fraction as frac
print(frac('3.14159265359'))
print(frac('3.14159265359').limit_denominator(1000))
print(frac('3.14159265359').limit_denominator(100))
print(frac('3.14159265359').limit_denominator(10))
print(frac('36.25'))
print(frac('36.25').numerator)
print(frac('36.25').denominator)

Đầu ra

314159265359/100000000000
355/113
311/99
22/7
145/4
145
4

Phân số cũng có thể hỗ trợ các phép toán như cộng, trừ, nhân, chia, lũy thừa, v.v.

Mã mẫu

from fractions import Fraction as frac
print('Add: ' + str(frac('5/4') + frac('9/8')))
print('Subtract: ' + str(frac('15/20') - frac('2/8')))
print('Multiply: ' + str(frac('2/3') * frac('5/7')))
print('Divide: ' + str(frac('80/125') / frac('12/45')))
print('Power: ' + str(frac('5/6') ** 3))

Đầu ra

Add: 19/8
Subtract: 1/2
Multiply: 10/21
Divide: 12/5
Power: 125/216

Căn bậc hai, sàn, trần và một số phép toán khác cũng được hỗ trợ bởi đối tượng này.

Mã mẫu

from fractions import Fraction as frac
import math
print('Square Root: ' + str(math.sqrt(frac(36, 64))))
print('Square Root: ' + str(frac(math.sqrt(frac(36, 64)))))
print('Floor Value: ' + str(math.floor(frac('22/7'))))
print('Ceiling Value: ' + str(math.ceil(frac('22/7'))))

Đầu ra

Square Root: 0.75
Square Root: 3/4
Floor Value: 3
Ceiling Value: 4