यहां हम देखेंगे कि सी या सी ++ का उपयोग करके दो फ्लोटिंग पॉइंट डेटा या दो डबल डेटा की तुलना कैसे करें। फ़्लोटिंग पॉइंट / डबल तुलना पूर्णांक तुलना के समान नहीं है।
दो फ्लोटिंग पॉइंट या डबल वैल्यू की तुलना करने के लिए, हमें तुलना में सटीकता पर विचार करना होगा। उदाहरण के लिए, यदि दो संख्याएँ 3.1428 और 3.1415 हैं, तो वे सटीक 0.01 तक समान हैं, लेकिन उसके बाद, 0.001 की तरह वे समान नहीं हैं।
इस मानदंड का उपयोग करके तुलना करने के लिए, हम एक फ़्लोटिंग पॉइंट नंबर को दूसरे से घटाकर निरपेक्ष मान प्राप्त करेंगे, फिर जाँच करें कि परिणाम सटीक मान से कम है या नहीं। इससे हम यह तय कर सकते हैं कि वे समकक्ष हैं या नहीं।
उदाहरण
#include <iostream> #include <cmath> using namespace std; bool compare_float(float x, float y, float epsilon = 0.01f){ if(fabs(x - y) < epsilon) return true; //they are same return false; //they are not same } bool compare_float(double x, double y, double epsilon = 0.0000001f){ if(fabs(x - y) < epsilon) return true; //they are same return false; //they are not same } int main() { float x, y; x = 22.0f/7.0f; y = 3.1415f; if(compare_float(x, y)){ cout << "They are equivalent" << endl; } else { cout << "They are not equivalent" << endl; } if(compare_float(x, y, 0.001f)){ cout << "They are equivalent" << endl; } else { cout << "They are not equivalent" << endl; } double a, b; a = 2.03547415; b = 2.03547428; if(compare_float(a, b)){ cout << "They are equivalent" << endl; } else { cout << "They are not equivalent" << endl; } if(compare_float(a, b, 0.000001f)){ cout << "They are equivalent" << endl; } else { cout << "They are not equivalent" << endl; } }
आउटपुट
They are equivalent They are not equivalent They are not equivalent They are equivalent