So sánh float và double tùy vào mục đích. Nếu muốn hàm chạy được mà không đi sâu chi tiết và chấp nhận sai số nhỏ, dùng hàm sau:
Ví dụ
#include <iostream>
#include <cmath>
using namespace std;
#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); // 1 (true)
cout << areSame(a, b); // 0 (false)
}Đầu ra
1 0
Hàm so sánh sai số tuyệt đối với ngưỡng EPSILON. Cần chính xác hơn, đọc bài: https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/