【发布时间】:2014-09-09 20:18:50
【问题描述】:
当我运行这段代码时:
#include <limits>
#include <cstdio>
#define T double
int main()
{
static const T val = std::numeric_limits<T>::min();
printf( "%g/2 = %g\n", val, val/2 );
}
我希望看到一个不可预知的结果。 但我得到了正确答案:
(16:53) > clang++ test_division.cpp -o test_division
(16:54) > ./test_division
2.22507e-308/2 = 1.11254e-308
这怎么可能?
【问题讨论】:
-
@crhis 谢谢,这很明显,但我从来没有区分规范化/非规范化.. 每天学习,我想另一个有用的链接是:en.cppreference.com/w/cpp/types/numeric_limits/denorm_min
标签: c++ numeric-limits