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

C++ में फ़्लोटिंग-प्वाइंट अंकगणित परिशुद्धता त्रुटियों की ओर क्यों ले जाता है?

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

Why Does Floating-Point Arithmetic in C   Lead to Precision Errors?

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