ที่นี่เราจะดูวิธีเปรียบเทียบข้อมูลทศนิยมสองจุดโดยใช้ 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
}
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;
}
} ผลลัพธ์
They are equivalent They are not equivalent