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` काम करता है, लेकिन दूसरों के लिए...