在循环中确定DBL_MIN

时间:2015-11-23 11:08:42

标签: c++ double precision

我试图在一个循环中确定DBL_MIN(为了测试另一个问题),我对输出感到惊讶:

double tmp(1.0);
double min(tmp);
while(tmp>0)
{
    tmp/=2.0;
    if(tmp>0) min=tmp;
        else break;
}

cout<<scientific<<endl;
cout<<"Computed minimum: "<<min<<endl;
cout<<"Defined minimum: "<<DBL_MIN<<endl;
if(min>0 && min<DBL_MIN) cout<<"min is between 0 and DBL_MIN, HUH!"<<endl;

exit(1);

输出结果为:

Computed minimum: 4.940656e-324
Defined minimum: 2.225074e-308
min is between 0 and DBL_MIN, HUH!

当最小正值为2.2e-308时, min 如何保持值4.94e-324?据我所知,DBL_MIN以下的正值不应该代表。在Linux下的Core i7上使用GCC 4.9.2进行测试。

0 个答案:

没有答案