C में फ़्लोटिंग-पॉइंट परिशुद्धता
C में, फ़्लोटिंग-पॉइंट संख्याएं दशमलव स्थानों की एक निश्चित संख्या तक सटीक होती हैं। हालाँकि, इस सटीकता की सीमाएँ हैं, जिससे अप्रत्याशित परिणाम हो सकते हैं।
समस्या विवरण
निम्न कोड स्निपेट पर विचार करें:
double a = 0.3;
std::cout.precision(20);
std::cout जैसा कि दिखाया गया है, a 0.3 से थोड़ा कम है, लेकिन जब 50 से गुणा किया जाता है, तो b 15.0 से थोड़ा अधिक हो जाता है। अपेक्षित परिणाम से इस विचलन को फ्लोटिंग-पॉइंट परिशुद्धता की सीमाओं के लिए जिम्मेदार ठहराया जा सकता है।
Solution
सही परिणाम प्राप्त करने के लिए, सेटिंग से बचना महत्वपूर्ण है संख्यात्मक प्रकार के लिए उपलब्ध सटीकता से अधिक सटीकता। निम्नलिखित संशोधित कोड स्निपेट इस दृष्टिकोण को प्रदर्शित करता है:
#include
#include
int main() {
double a = 0.3;
std::cout.precision(std::numeric_limits::digits10);
std::cout ::digits10);
std::cout यह दृष्टिकोण सुनिश्चित करता है कि सटीकता दोहरे डेटा प्रकार के लिए उपलब्ध अधिकतम पर सेट है। यह ध्यान रखना महत्वपूर्ण है कि यदि लूप को काफी बड़ी संख्या में पुनरावृत्तियों के लिए चलाया जाता है, जैसे कि 50 के बजाय 5000, तो सटीक सेटिंग की परवाह किए बिना, संचित त्रुटि अंततः ध्यान देने योग्य हो जाएगी। यह फ़्लोटिंग-पॉइंट अंकगणित की एक अंतर्निहित सीमा है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3