Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python จำนวนตรรกยะ (เศษส่วน)


จำนวนใดๆ ที่สามารถแสดงเป็นผลหารหรือเศษส่วนในรูปของ p/q ได้เรียกว่าจำนวนตรรกยะ โมดูลเศษส่วนของไลบรารี Python มีฟังก์ชันสำหรับเลขตรรกยะ

โมดูลนี้กำหนดคลาสเศษส่วน วัตถุสามารถประกอบขึ้นได้หลายวิธีดังนี้ −

Fraction(num, denom)

ตัวสร้างเศษส่วนรุ่นแรกได้รับพารามิเตอร์สองตัวสำหรับตัวเศษและตัวส่วน ตัวเศษเริ่มต้นคือ 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 ในรูปแบบเลขฐานสองล้วน ความฉลาดของตัวเศษและตัวส่วนของผลลัพธ์ของวัตถุเศษส่วนอาจไม่แน่นอน ในทางกลับกัน อ็อบเจกต์ของคลาส 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)

อนุญาตให้ดำเนินการเลขคณิตทั้งหมดกับวัตถุเศษส่วนได้

>>> 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 จำนวนตรรกยะ (เศษส่วน)

วัตถุเศษส่วนมีสองแอตทริบิวต์ คือ ตัวเศษและส่วนซึ่งสามารถเข้าถึงได้โดยอิสระ

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