double.min - should be 5e-324?

Don nospam at nospam.com
Sat Dec 4 21:59:37 PST 2010


Don wrote:
> Dmitry Olshansky wrote:
>> Well,  to keep things short, double.min returns something weird.
>> See the following for demonstration:
>> import std.stdio;
>>
>> void main(){
>>     double r = double.max, r2 = double.min;
>>     writeln(r);//1.79769e+308
>>     r *= 2;//test if it's max
>>     writeln(r); // infinity, ok
>>
>>     writeln(r2);//2.22507e-308, wtf ?
>>     r2 /= 2.0;
>>     writeln(r2);// 1.11254e-308, a logical consequence of above
>>
>>     double dmin = 5e-324;
>>     writeln(dmin);// 4.94066e-324
>>     dmin /= 2.0;
>>     writefln(dmin);// 0
>> }
>>
> double.min is deprecated, for exactly this reason. That's why it's not 
> mentioned in the spec.

And futher -- double.min_normal is the smallest normalised double. The 
smallest representable double is (double.min_normal * double.epsilon).

double.min is a silly name, so it has been deprecated.


More information about the Digitalmars-d mailing list