Trong Python module Fraction hỗ trợ arithmetic số hữu tỷ. Sử dụng module này, chúng ta có thể tạo phân số từ số nguyên, float, decimal và từ một số giá trị số và chuỗi khác.
Có khái niệm Fraction Instance (thể hiện phân số). Nó được hình thành bởi một cặp số nguyên làm tử số và mẫu số.
Lớp fractions.Fraction được dùng để tạo đối tượng Fraction. Nó nhận Tử số và Mẫu số. Giá trị mặc định của tử số là 0 và mẫu số là 1. Nó ném ZeroDivisionError khi mẫu số là 0.
Trước tiên chúng ta sẽ xem lớp có thể tạo phân số như thế nào sử dụng Tử số và Mẫu số.
Mã ví dụ
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 ta 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 ta cung cấp giá trị dấu phẩy động chính xác, nó sẽ cố gắng chuyển đổi nó thành giá trị tử số và mẫu số kiểu nguyên. Trong trường hợp này, nó cố gắng đạt đến giá trị xấp xỉ. Nếu số dấu phẩy động được cung cấp như một chuỗi, nó sẽ cố gắng tìm giá trị chính xác như Fraction. Từ các ví dụ sau, bạn có thể thấy sự khác biệt.
Mã ví dụ
from fractions import Fraction as frac
print(frac(33.33))
print(frac('33.33'))
Đầu ra
2345390243441541/70368744177664 3333/100
Hãy xem, một số ví dụ khác về đối số kiểu chuỗi cho đối tượng Fraction. Nó cũng hỗ trợ dấu của số. Nó hỗ trợ dấu + hoặc -.
Mã ví dụ
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 Fraction. Vì vậy chúng ta có thể giới hạn độ dài mẫu số. Độ dài mặc định là 1000000. Nó giúp thực hiện xấp xỉ hữu tỷ cho dữ liệu dấu phẩy động. Để giới hạn mẫu số, có một hàm gọi là limit_denominator().
Đôi khi chúng ta chỉ muốn tử số hoặc mẫu số mà không cần toàn bộ đối tượng phân số. Vì vậy phương pháp này có từ khóa numerator và denominator để lấy chúng.
Mã ví dụ
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 hỗ trợ các phép toán toán học, như cộng, trừ, nhân, chia, lũy thừa, v.v.
Mã ví dụ
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, floor, ceiling và một số phép toán khác cũng được hỗ trợ bởi đối tượng này.
Mã ví dụ
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