Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Hàm islessequal() trong C/C++

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àmSo sánh
isgreaterx > y
isgreaterequalx >= y
islessx < y
islessequalx <= y
islessgreaterx < y || x > y (không bằng)
isunorderedx 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.