DBL_MIN是最小的正双精度数吗?

Is DBL_MIN the smallest positive double?

本文关键字:双精度 MIN DBL      更新时间:2023-10-16

Q: DBL_MIN是最小的正双精度体吗?

下面的代码似乎用no来回答这个问题。但是,如果这是真的,DBL_MIN是如何定义的,它的用途或目的是什么?

平台:Windows7 &Visual Studio 2013

double next_to_zero = std::nextafter(0.0,DBL_MIN);
bool b =  DBL_MIN <= next_to_zero;
std::cout << std::boolalpha 
          << "is dbl_min the smallest representable double? "
          << b << 'n';
std::cout << std::setprecision(56)
          << "dbl_min = " << DBL_MIN << 'n'
          << "next to zero = " << next_to_zero;

输出:

dbl_min是最小的可表示双精度数吗?假

dbl_min = 2.22507385850720138309023271733240642192159804623318306e -308

接近零= 4.9406564584124654417656879286822137236505980261432476443e-324

我将这个答案限制为IEEE754浮点数,这可能是不必要的。

DBL_MIN不允许是次正常数。

但是允许std::nextafter返回一个低于正常的数。

因此后者的返回值可以小于DBL_MIN

详细信息请参见https://en.wikipedia.org/wiki/Denormal_number

DBL_MIN是最小的正双元吗?


不肯定。DBL_MIN为最小正 double

DBL_TRUE_MIN是最小的正double(自c++ 17以来)。当double支持亚法线时,它将小于DBL_MIN