在C++中比较无穷大和无穷大

elz*_*ell 5 c++ floating-point infinity

假设我有两个变量都设置为无穷大

double l = std::numeric_limits<double>::infinity();
double r = std::numeric_limits<double>::infinity();
Run Code Online (Sandbox Code Playgroud)

在代码的另一点,我对这两个变量进行了比较

if (l < r) {}
Run Code Online (Sandbox Code Playgroud)

这个比较的结果是在库中正确定义的吗?(在我的程序的逻辑中,我希望结果是false.)

Bla*_*aze 12

(在我的程序的逻辑中,我希望结果是 false.)

根据这个:

在比较操作中,正无穷大大于除自身和NaN之外的所有值

所以你确实是对的.

请注意,如果您的编译器使用与IEEE 754不同的标准,这可能无效,因此请确保在有疑问时std::numeric_limits<double>::is_iec559;返回true.