Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Số hữu tỷ (Rational Numbers) trong Python - module fractions


Bất kỳ số nào biểu diễn được dưới dạng thương hoặc phân số p/q gọi là số hữu tỷ (rational number). Module fractions của thư viện Python cung cấp chức năng số học cho số hữu tỷ.

Module này định nghĩa class Fraction. Đối tượng của nó có thể tạo theo nhiều cách:

Fraction(num, denom)

Phiên bản đầu của constructor Fraction nhận hai tham số cho tử số và mẫu số. Tử số mặc định 0, mẫu số mặc định 1. Giá trị mẫu số = 0 ném 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)

Lưu ý tử số và mẫu số được rút gọn về giá trị nhỏ nhất sau khi chia cho ước chung.

Constructor Fraction cũng nhận tham số chuỗi nếu chuỗi chứa biểu diễn số hợp lệ.

>>> 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)

Số thực (float) cũng có thể là tham số constructor. Tuy nhiên, do biểu diễn float ở dạng nhị phân thuần túy, thương của tử và mẫu của Fraction kết quả có thể không chính xác. Ngược lại, đối tượng class Decimal làm tham số cũng tạo ra 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)

Tất cả phép toán số học đều cho phép với đối tượng 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)

Chỉ nhắc lại cách thực hiện phép toán phân số dưới dạng thương –

 Số hữu tỷ (Rational Numbers) trong Python - module fractions

Đối tượng Fraction có hai thuộc tính, numerator và denominator, có thể truy cập độc lập.

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

Class Fraction có các phương thức hữu ích sau để tìm số nguyên lớn nhất nhỏ hơn thương (giá trị floor) và số nguyên nhỏ nhất lớn hơn thương (giá trị ceil)

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

Phương thức class limit_denominator() trả về phân số gần nhất có mẫu số tối đa bằng giá trị chỉ định.

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

Trong bài này, đã thảo luận các tính năng và hàm trong module fractions của thư viện chuẩn Python.