我试图在一个循环中确定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进行测试。