ที่นี่เราจะมาดูวิธีเปรียบเทียบข้อมูลทศนิยมสองข้อมูลหรือข้อมูลคู่สองรายการโดยใช้ C หรือ C++ การเปรียบเทียบจุดลอยตัว / คู่ไม่เหมือนกับการเปรียบเทียบจำนวนเต็ม
ในการเปรียบเทียบค่าทศนิยมสองค่าหรือค่าสองเท่า เราต้องพิจารณาความแม่นยำในการเปรียบเทียบ ตัวอย่างเช่น หากตัวเลขสองตัวคือ 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