การคำนวณเศษส่วน (จำนวนตรรกยะ) ด้วยเศษส่วน

ธุรกิจ

เมื่อใช้โมดูลเศษส่วนของไลบรารี Python มาตรฐาน คุณสามารถคำนวณด้วยเศษส่วน (จำนวนตรรกยะ)

ต่อไปนี้จะอธิบายไว้ที่นี่

  • ตัวสร้างเศษส่วน
  • รับค่าตัวเศษและตัวส่วนเป็นจำนวนเต็ม
  • การคำนวณและการเปรียบเทียบเศษส่วน (จำนวนตรรกยะ)
  • การแปลงเศษส่วนเป็นทศนิยม (ลอย)
  • การแปลงเศษส่วนเป็นสตริง (str)
  • รับการประมาณจำนวนตรรกยะ

ตัวสร้างเศษส่วน

มีหลายวิธีในการสร้างอินสแตนซ์ Fraction เศษส่วนจะถูกแบ่งออกเป็นเศษส่วนโดยอัตโนมัติในทุกกรณี

ระบุตัวเศษและตัวส่วนเป็นจำนวนเต็ม

ระบุตัวเศษและตัวส่วนเป็นจำนวนเต็มตามลำดับ หากละเว้นตัวส่วน จะถือว่าเป็น 1

from fractions import Fraction

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

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

print(Fraction(3))
# 3

เศษส่วนทศนิยม(float)

หากส่งค่าเศษส่วน ค่านั้นจะถูกแปลงเป็นเศษส่วน

print(Fraction(0.25))
# 1/4

print(Fraction(0.33))
# 5944751508129055/18014398509481984

หากคุณต้องการประมาณค่าโดยการระบุตัวส่วนสูงสุด ให้ใช้เมธอด limit_denominator() ที่อธิบายไว้ด้านล่าง

สตริงอักขระ(str)

หากส่งค่าสตริง ค่านั้นจะถูกแปลงเป็นเศษส่วน

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

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

รับค่าตัวเศษและตัวส่วนเป็นจำนวนเต็ม

แอตทริบิวต์ของประเภทเศษส่วนช่วยให้คุณได้รับค่าจำนวนเต็มสำหรับตัวเศษและตัวส่วนตามลำดับ ไม่สามารถเปลี่ยนแปลงได้

  • 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

การคำนวณและการเปรียบเทียบเศษส่วน (จำนวนตรรกยะ)

ตัวดำเนินการเลขคณิตสามารถใช้ในการคำนวณการบวก การลบ ฯลฯ

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

สามารถใช้ตัวดำเนินการเปรียบเทียบได้

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

การแปลงเศษส่วนเป็นทศนิยม (ลอย)

สามารถแปลงจากเศษส่วนเป็นทศนิยมด้วย float()

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

เมื่อคำนวณด้วยเลขทศนิยม ระบบจะแปลงเป็นประเภททศนิยมโดยอัตโนมัติ

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

การแปลงเศษส่วนเป็นสตริง (str)

หากต้องการแปลงเป็นสตริง ให้ใช้ str()

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

รับการประมาณจำนวนตรรกยะ

สามารถหาค่าประมาณจำนวนตรรกยะได้ด้วยเมธอด limit_denominator() ของประเภทเศษส่วน

ส่งกลับจำนวนตรรกยะ (เศษส่วน) ที่มีตัวส่วนน้อยกว่าหรือเท่ากับอาร์กิวเมนต์ max_denominator หากไม่ระบุ max_denominator=1000000

จำนวนอตรรกยะโดยประมาณ เช่น ไพ และ เลขเนเปียร์ 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

แปลงทศนิยมวงกลมเป็นเศษส่วน

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