Hàm islessequal() kiểm tra x <= y an toàn với floating-point (không raise exception 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 islessequal(float/double/long double x, float/double/long double y);
Ví dụ
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int a = 8, b = 8;
bool r = islessequal(a, b);
cout << "a <= b: " << r << endl; // 1
a = 28; b = 8;
r = islessequal(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 số nguyên tương đương toán tử <=. Giá trị thực sự với float/double NaN: islessequal(NaN, 5) = false, không raise FE_INVALID.
Các hàm so sánh FP an toàn (C99/C++11)
| Hàm | So sánh |
|---|---|
| isgreater | x > y |
| isgreaterequal | x >= y |
| isless | x < y |
| islessequal | x <= y |
| islessgreater | x < y || x > y (không bằng) |
| isunordered | x hoặc y là NaN |
Lưu ý: Cần include
math.h/cmath và link -lm. Với integer, dùng toán tử built-in cho đơn giản.