Hàm isgreater() kiểm tra x > y an toàn floating-point (không raise FE_INVALID cho NaN). Trả về true (1) nếu đúng, false (0) nếu sai. Khai báo trong <math.h> / <cmath>.
Cú pháp
bool isgreater(float/double/long double x, float/double/long double y);
Ví dụ
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int a = 28, b = 8;
bool r = isgreater(a, b);
cout << "a > b: " << r << endl; // 1
a = 5; b = 8;
r = isgreater(a, b);
cout << "a > b: " << r << endl; // 0
return 0;
}
Kết quả
a > b: 1
a > b: 0
Giải thích: So sánh a > b. Với integer tương đương >. Ý nghĩa thực sự với float/double NaN: isgreater(NaN, 5) = false, không raise exception.
Tổng hợp các macro so sánh FP an toàn (C99/C++11)
| Macro/Hàm | So sánh | Mô tả |
|---|---|---|
| isgreater(x,y) | x > y | Lớn hơn |
| isgreaterequal(x,y) | x >= y | Lớn hơn hoặc bằng |
| isless(x,y) | x < y | Nhỏ hơn |
| islessequal(x,y) | x <= y | Nhỏ hơn hoặc bằng |
| islessgreater(x,y) | x < y || x > y | Khác nhau (không bằng, không NaN) |
| isunordered(x,y) | x NaN || y NaN | Ít nhất một là NaN |
Lưu ý: Cần
#include <math.h> và -lm. Dùng cho float/double. Với integer, dùng >, >=... thông thường.