c++ double nan inf的比较问题

#include <iostream>
#include <limits>

void compare(double a, double b) {
    if (a < b) {
        std::cout << a << " is less than " << b << std::endl;
    } else if (a > b) {
        std::cout << a << " is greater than " << b << std::endl;
    } else {
        std::cout << a << " is equal to " << b << std::endl;
    }
}

int main() {
    double small = 1.0;
    double big = 9999.0;
    double min = std::numeric_limits<double>::min();
    double max = std::numeric_limits<double>::max();
    double nan = std::numeric_limits<double>::quiet_NaN();
    double inf = std::numeric_limits<double>::infinity();
    double neg_inf = -std::numeric_limits<double>::infinity();

    compare(small, big);
    compare(big, nan);
    compare(big, inf);
    compare(min, neg_inf);
    compare(max, inf);
    compare(big, neg_inf);
    compare(nan, inf);
    compare(nan, neg_inf);
    return 0;
}
1 is less than 9999
9999 is equal to nan
9999 is less than inf
2.22507e-308 is greater than -inf
1.79769e+308 is less than inf
9999 is greater than -inf
nan is equal to inf
nan is equal to -inf
文章目录