"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > C++ में सटीक फ़्लोटिंग-पॉइंट परिशुद्धता कैसे सुनिश्चित करें?

C++ में सटीक फ़्लोटिंग-पॉइंट परिशुद्धता कैसे सुनिश्चित करें?

2024-11-16 को प्रकाशित
ब्राउज़ करें:113

How to Ensure Accurate Floating-Point Precision in C  ?

सी में फ़्लोटिंग-पॉइंट प्रिसिजन

सी में फ़्लोटिंग-पॉइंट नंबरों से निपटते समय, उनकी सटीक सीमाओं को समझना आवश्यक है। निम्नलिखित कोड पर विचार करें:

double a = 0.3;
std::cout.precision(20);
std::cout 

परिणाम 0.3 के बजाय 0.299999999999999889 है, जो परिशुद्धता की हानि को दर्शाता है। इसे संबोधित करने के लिए, C std::numeric_limits::digits10 स्थिरांक प्रदान करता है, जहां T फ़्लोटिंग-पॉइंट नंबर का प्रकार है। यह स्थिरांक महत्वपूर्ण अंकों की अधिकतम संख्या का प्रतिनिधित्व करता है जिन्हें सटीक रूप से दर्शाया जा सकता है।

परिशुद्धता को सही ढंग से सेट करने के लिए std::numeric_limits::digits10 का उपयोग कैसे करें:

#include 
#include 
int main()
{
        double a = 0.3;
        std::cout.precision(std::numeric_limits::digits10);
        std::cout ::digits10);
        std::cout 

यह कोड अधिकतम महत्वपूर्ण अंकों की सटीकता निर्धारित करता है जिन्हें दोहरे द्वारा सटीक रूप से दर्शाया जा सकता है। परिणामस्वरूप, दोनों मामलों में आउटपुट 0.3 होगा।

हालांकि, यह ध्यान रखना महत्वपूर्ण है कि इस दृष्टिकोण के साथ भी, यदि लूप 50 से अधिक बार पुनरावृत्त होता है तो संचित त्रुटियां हो सकती हैं। ऐसा इसलिए है क्योंकि फ़्लोटिंग-पॉइंट संख्याएँ एक अनुमान हैं, और संचालन की एक श्रृंखला में त्रुटियाँ जमा हो सकती हैं। ऐसी स्थितियों को संभालने के लिए, उन पुस्तकालयों का उपयोग करने की अनुशंसा की जाती है जो मनमानी-सटीक अंकगणित प्रदान करते हैं, जैसे कि Boost.Multiprecision।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3