फ्लोट्स और डबल वेरिएबल्स की तुलना करना इस बात पर निर्भर करता है कि आपका अंतिम लक्ष्य क्या है। यदि आप विवरण में बहुत अधिक जाने के बिना एक रन करने योग्य फ़ंक्शन चाहते हैं और कुछ गलत गणनाओं में कोई समस्या नहीं होगी, तो आप निम्न फ़ंक्शन का उपयोग कर सकते हैं -
उदाहरण
#include<iostream> using namespace std; // Define the error that you can tolerate #define EPSILON 0.000001 bool areSame(double a, double b) { return fabs(a - b) < EPSILON; } int main() { double a = 1.005; double b = 1.006; cout << areSame(a, a); cout << areSame(a, b); }
आउटपुट
यह आउटपुट देगा -
1 0
यह फ़ंक्शन त्रुटि के लिए आपकी सहनशीलता लेता है और जांचता है कि थ्रेशोल्ड आपके द्वारा तुलना की जा रही संख्याओं के बीच के अंतर से अधिक है या नहीं। यदि आपको कुछ अधिक सटीक चाहिए, तो आप इस उत्कृष्ट ब्लॉग पोस्ट को पढ़ना बेहतर समझते हैं:https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/