use*_*183 7 c++ numeric language-lawyer
问: 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;
Run Code Online (Sandbox Code Playgroud)
输出:
dbl_min是最小的可表示的双倍?假
dbl_min = 2.2250738585072013830902327173324040642192159804623318306e-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 起)。它会比支持subnormalsDBL_MIN时小。double
| 归档时间: |
|
| 查看次数: |
5078 次 |
| 最近记录: |