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

โมดูล Fraction ใน Python

ใน Python โมดูล Fraction รองรับ rational number arithmetic ด้วยโมดูลนี้ เราสามารถสร้าง fractions จาก integers, floats, decimal และจากค่าตัวเลขและสตริงอื่นๆ ได้

มีแนวคิดของ Fraction Instance ถูกสร้างจากคู่ของ integers เป็น numerator และ denominator

คลาส fractions.Fraction ใช้สร้าง Fraction object รับ Numerator และ Denominator ค่าเริ่มต้นของ numerator คือ 0 และ denominator คือ 1 จะ raise ZeroDivisionError เมื่อ denominator เป็น 0

ก่อนอื่นเราจะดูวิธีที่คลาสสร้าง fractions ด้วย Numerator และ Denominator

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

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

ผลลัพธ์

5/6
12/47
0

เราสามารถให้ floating point numbers เป็น argument ของ Fraction object ได้ หากให้ค่าทศนิยมที่แน่นอน จะพยายามแปลงเป็น numerator และ denominator แบบ integer ในกรณีนี้ พยายามเข้าใกล้ค่าประมาณ หาก floating point number ให้เป็น string จะพยายามหาค่าที่ถูกต้องเป็น Fraction จากตัวอย่างต่อไปนี้ คุณจะเห็นความแตกต่าง

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

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

ผลลัพธ์

2345390243441541/70368744177664
3333/100

ลองดูตัวอย่างอื่นๆ ของ string type arguments ให้ Fraction object รองรับเครื่องหมายของตัวเลข รองรับ + หรือ -

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

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

เห็นได้ว่า denominator บางครั้งใหญ่มากใน Fraction object ดังนั้นเราสามารถจำกัดความยาว denominator ได้ ความยาวค่าเริ่มต้นคือ 1000000 ช่วยให้ทำ rational approximation สำหรับ floating point data เพื่อจำกัด denominator มีฟังก์ชันชื่อ limit_denominator()

บางครั้งเราอาจต้องการแค่ numerators หรือ denominators โดยไม่ต้องการ fraction object ทั้งหมด เมธอดนี้มี numerator และ denominator keyword เพื่อดึงพวกมัน

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

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

Fractions ยังรองรับ mathematical operations เช่น addition, subtraction, multiplication, division, power ฯลฯ

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

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

Square root, floor, ceiling และ operations อื่นๆ ก็รองรับโดย object นี้

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

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