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