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

โมดูลเศษส่วนใน Python


ใน Python โมดูลเศษส่วนรองรับเลขคณิตตรรกยะ เมื่อใช้โมดูลนี้ เราสามารถสร้างเศษส่วนจากจำนวนเต็ม ทศนิยม ทศนิยม และจากค่าตัวเลขและสตริงอื่นๆ

มีแนวคิดของอินสแตนซ์เศษส่วน มันเกิดจากคู่ของจำนวนเต็มเป็นตัวเศษและส่วน

คลาส fractions.Fraction ใช้ในการสร้างวัตถุเศษส่วน ต้องใช้ตัวเศษและตัวส่วน ค่าเริ่มต้นของตัวเศษคือ 0 และตัวส่วนคือ 1 ซึ่งจะทำให้เกิด ZeroDivisionError เมื่อตัวส่วนเป็น 0

ขั้นแรกเราจะดูว่าชั้นเรียนสามารถสร้างเศษส่วนโดยใช้ตัวเศษและส่วนได้อย่างไร

โค้ดตัวอย่าง

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

ผลลัพธ์

5/6
12/47
0

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

โค้ดตัวอย่าง

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

ผลลัพธ์

2345390243441541/70368744177664
3333/100

ให้เราดูตัวอย่างอื่น ๆ เกี่ยวกับอาร์กิวเมนต์ประเภทสตริงของวัตถุเศษส่วน นอกจากนี้ยังรองรับเครื่องหมายของตัวเลข รองรับเครื่องหมาย + หรือ -

โค้ดตัวอย่าง

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

ผลลัพธ์

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

ดังที่เราได้เห็นแล้ว บางครั้งตัวส่วนก็มีขนาดใหญ่มากในวัตถุเศษส่วน เราจึงสามารถจำกัดความยาวของตัวส่วนได้ ความยาวเริ่มต้นคือ 1000000 ช่วยในการประมาณเหตุผลสำหรับข้อมูลจุดลอยตัว ในการจำกัดตัวส่วน มีฟังก์ชันที่เรียกว่า limit_denominator() .

บางครั้งเราต้องการเฉพาะตัวเศษหรือตัวส่วนที่ไม่มีวัตถุเศษส่วนทั้งหมด ดังนั้นวิธีนี้จึงมีคีย์เวิร์ดตัวเศษและตัวส่วนเพื่อให้ได้มา

โค้ดตัวอย่าง

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)

ผลลัพธ์

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

เศษส่วนยังสามารถสนับสนุนการดำเนินการทางคณิตศาสตร์ เช่น บวก ลบ คูณ หาร ยกกำลัง ฯลฯ

โค้ดตัวอย่าง

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

ผลลัพธ์

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

ออบเจ็กต์นี้รองรับสแควร์รูท พื้น เพดาน และการดำเนินการอื่นๆ บางส่วนด้วย

โค้ดตัวอย่าง

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

ผลลัพธ์

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