Avatar ·

C++ में float और double की तुलना: सटीकता हानि के कारण त्रुटियों से कैसे बचें?

सभी को नमस्ते। मैं एक शुरुआती C++ डेवलपर हूं और फ्लोटिंग-पॉइंट संख्याओं की तुलना करते समय एक समस्या का सामना करना पड़ा। मैं भौतिक प्रक्रियाओं के सिमुलेशन के लिए एक प्रोग्राम लिख रहा हूं, और मुझे यह जांचने की आवश्यकता है कि क्या दो संख्याएं float या double प्रकार की बराबर हैं। समस्या यह है कि गणना में त्रुटियों के कारण (उदाहरण के लिए, 0.1 + 0.2, 0.3 के बराबर नहीं है) `==` के माध्यम से सीधी तुलना लगभग कभी काम नहीं करती: ```cpp #include int main() { double a = 0.1 + 0.2; double b = 0.3; if (a == b) { std::cout << "बराबर" << std::endl; } else { std::cout << "बराबर नहीं" << std::endl; // यह प्रिंट होता है } return 0; } ``` मैंने पढ़ा है कि किसी "एप्सिलॉन" (सहनशीलता) के साथ तुलना करनी चाहिए, लेकिन मुझे समझ नहीं आता कि इस मान को सही तरीके से कैसे चुनें। उदाहरण के लिए, कुछ संख्याओं के लिए `1e-6` काम करता है, लेकिन दूसरों के लिए...