पायथन में फ़्लोटिंग पॉइंट त्रुटियों से बचना
प्रोग्रामिंग के दायरे में, फ़्लोटिंग पॉइंट गणनाओं की जटिलताओं को समझना आवश्यक है, क्योंकि वे कर सकते हैं यदि ठीक से प्रबंधन न किया जाए तो अप्रत्याशित त्रुटियां उत्पन्न हो जाती हैं। यह आलेख एक व्यावहारिक उदाहरण का पता लगाता है जो फ़्लोटिंग पॉइंट अंकगणित के नुकसान पर प्रकाश डालता है।
def sqrt(num): जड़ = 0.0 जबकि रूट * रूट इस फ़ंक्शन का उपयोग करते हुए, हमें आश्चर्यजनक परिणाम मिलते हैं:
>>> sqrt(4) 2.000000000000013 >>> वर्ग(9) 3.00999999999998
def sqrt(num):
root = 0.0
while root * root त्रुटि को समझना
>>> sqrt(4)
2.0000000000000013
>>> sqrt(9)
3.00999999999998
उपरोक्त कोड में, समस्या इस वेतन वृद्धि का उपयोग मूल मूल्य को बढ़ाने के लिए किया जाता है। जबकि हम 0.01 का मान जोड़ने का इरादा रखते हैं, फ़्लोटिंग पॉइंट रजिस्टर में संग्रहीत वास्तविक मान थोड़ा अलग है और 0.01 से अधिक है।त्रुटि को संबोधित करना
से बचने के लिए फ़्लोटिंग पॉइंट त्रुटियाँ, विभिन्न तरीकों को नियोजित किया जा सकता है:दशमलव का उपयोग करना मॉड्यूल:
पायथन में दशमलव मॉड्यूल अधिक सटीक दशमलव अंकगणित प्रदान करता है। कोड में फ्लोट को दशमलव से बदलने पर, हमें अधिक सटीक परिणाम मिलते हैं:- दशमलव से दशमलव को डी के रूप में आयात करें
डीईएफ़ वर्ग(संख्या):
जड़ = डी(0)
जबकि रूट * रूट
अब, फ़ंक्शन सटीक परिणाम देता है, जैसे:
```
>>> वर्ग(4)
दशमलव('2.00')
>>> वर्ग(9)
दशमलव('3.00')
```
from decimal import Decimal as D
def sqrt(num):
root = D(0)
while root * root यदि दशमलव मॉड्यूल का उपयोग करना एक विकल्प नहीं है, तो दूसरा तरीका फ़्लोटिंग पॉइंट मानों का उपयोग करना है जो बाइनरी में बिल्कुल प्रस्तुत करने योग्य हैं, जैसे 1/2**जे. इसमें अधिक जटिल कोड शामिल है, लेकिन यह सटीक वृद्धि सुनिश्चित करता है।>>> sqrt(4)
2.0000000000000013
>>> sqrt(9)
3.00999999999998
संख्यात्मक विश्लेषण तकनीकों को नियोजित करना:- संख्यात्मक विश्लेषण जटिल गणितीय गणनाओं को संभालने के लिए विशेष तरीके प्रदान करता है। न्यूटन की विधि जैसी तकनीकें सटीक वर्गमूल सन्निकटन प्रदान कर सकती हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3