DBL_MIN 是最小的正双数吗?
Is DBL_MIN the smallest positive double?
问:是DBL_MIN最小的正双精度吗?
下面的代码似乎没有回答这个问题。但如果这是真的,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;
输出:
is dbl_min the smallest representable double? false
dbl_min = 2.2250738585072013830902327173324040642192159804623318306e-308
next to zero = 4.9406564584124654417656879286822137236505980261432476443e-324
我将此答案限制为 IEEE754 浮点数,这可能是不必要的。
DBL_MIN
不允许是 次正规 数字。
但是 std::nextafter
允许 return 一个 次正常 数字。
因此后者的return值可能小于DBL_MIN
.
Is DBL_MIN
the smallest positive double?
不一定。
DBL_MIN
是最小正数正常double
.
DBL_TRUE_MIN
是最小的正值 double
(C++17 起)。当 double
支持 subnormals.
时,它将小于 DBL_MIN
问:是DBL_MIN最小的正双精度吗?
下面的代码似乎没有回答这个问题。但如果这是真的,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;
输出:
is dbl_min the smallest representable double? false
dbl_min = 2.2250738585072013830902327173324040642192159804623318306e-308
next to zero = 4.9406564584124654417656879286822137236505980261432476443e-324
我将此答案限制为 IEEE754 浮点数,这可能是不必要的。
DBL_MIN
不允许是 次正规 数字。
但是 std::nextafter
允许 return 一个 次正常 数字。
因此后者的return值可能小于DBL_MIN
.
Is
DBL_MIN
the smallest positive double?
不一定。
DBL_MIN
是最小正数正常double
.
DBL_TRUE_MIN
是最小的正值 double
(C++17 起)。当 double
支持 subnormals.
DBL_MIN