双重比较 - 数字限制

Nic*_*ick 5 c++

我在理解以下代码时遇到一些麻烦:

double a = -1000;
double b = numeric_limits<double>::min();

if (a < b)
{
   cout << "why?";
}
Run Code Online (Sandbox Code Playgroud)

输出是:

为什么?

怎么可能-1000低于numeric_limits<double>::min()

Eug*_*ene 9

这是因为numeric_limits<double>::min();双浮点精度中可以表示的最低正数,而不是最负数.