Python में Fraction मॉड्यूल रेशनल नंबर अंकगणित का समर्थन करता है। इस मॉड्यूल का उपयोग करके, हम इंटीजर्स, फ्लोट्स, डेसीमल और कुछ अन्य न्यूमेरिक वैल्यूज़ और स्ट्रिंग्स से फ्रैक्शन्स बना सकते हैं।
Fraction Instance की एक अवधारणा है। यह न्यूमेरेटर और डिनॉमिनेटर के रूप में इंटीजर्स की एक जोड़ी द्वारा बनाया जाता है।
क्लास fractions.Fraction का उपयोग Fraction ऑब्जेक्ट बनाने के लिए किया जाता है। यह न्यूमेरेटर और डिनॉमिनेटर लेता है। न्यूमेरेटर का डिफ़ॉल्ट मान 0 है और डिनॉमिनेटर 1 है। जब डिनॉमिनेटर 0 होता है तो यह ZeroDivisionError उठाता है।
सबसे पहले हम देखेंगे कि क्लास न्यूमेरेटर और डिनॉमिनेटर का उपयोग करके फ्रैक्शन्स कैसे बना सकती है।
उदाहरण कोड
from fractions import Fraction as frac
print(frac(45, 54))
print(frac(12, 47))
print(frac(0, 15))
आउटपुट
5/6
12/47
0
हम Fraction ऑब्जेक्ट के आर्गुमेंट के रूप में कुछ फ्लोटिंग पॉइंट नंबर्स प्रदान कर सकते हैं। यदि हम सटीक फ्लोटिंग पॉइंट वैल्यू प्रदान करते हैं, तो यह इसे इंटीजर टाइप के न्यूमेरेटर और डिनॉमिनेटर वैल्यू में कन्वर्ट करने का प्रयास करेगा। इस मामले में, यह अनुमानित वैल्यू तक पहुंचने का प्रयास करता है। यदि फ्लोटिंग पॉइंट नंबर को स्ट्रिंग के रूप में प्रदान किया जाता है, तो यह फ्रैक्शन के रूप में सटीक वैल्यू खोजने का प्रयास करेगा। निम्न उदाहरणों से आप अंतर देख सकते हैं।
उदाहरण कोड
from fractions import Fraction as frac
print(frac(33.33))
print(frac('33.33'))
आउटपुट
2345390243441541/70368744177664
3333/100
आइए देखें, Fraction ऑब्जेक्ट के स्ट्रिंग टाइप आर्गुमेंट्स पर कुछ अन्य उदाहरण। यह नंबर्स के साइन को भी सपोर्ट करता है। यह + या - साइन को सपोर्ट करता है।
उदाहरण कोड
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
जैसा कि हमने देखा, कभी-कभी Fraction ऑब्जेक्ट में डिनॉमिनेटर्स बहुत बड़े होते हैं। इसलिए हम डिनॉमिनेटर की लंबाई को सीमित कर सकते हैं। डिफ़ॉल्ट लंबाई 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