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

Compare infinity with infinity in C++

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

double l = std::numeric_limits<double>::infinity();
double r = std::numeric_limits<double>::infinity();

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

if (l < r) {}

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

(Within the logic of my program, I would expect the result to be false.)

根据this

In comparison operations, positive infinity is larger than all values except itself and NaN

原来你是对的

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

C++ 不需要实现来支持其浮点类型中的无穷大。但是,如果实现确实支持无穷大,我们可以预期 infinity < infinity 为假。 C++ 隐含地假设了正常的数学——它没有定义数学加法、乘法、除法、余弦、对数等,而只是假设数学是 reader.

已知的背景信息。

数学家确实区分了不同类型的无穷大,但 C++ 对此没有规定;它只提供一个正无穷大和一个负无穷大。所以很明显它们是实数的简单扩展。