I may be wrong but Perl double are based on C double which are defined like this according to ANSI/ISO IEEE 754-1985 standard :
double -> 64 bits
A double element has a sign bit, an 11-bit exponent and a 52-bit fraction.
The precise form to be used is quite tightly specified by the standard IEEE 754 which is implemented in hardware on most modern machines.
Features of the notation:
The first bit represents the sign of the number.
The next 8 bits (float or single precision) or 11 bits (double, double precision)
represent the exponent in excess-127 or excess-1023 notation.
To overcome difficulties related to signed exponents, the exponent is stored as a binary integer with a bias of 127(float) or 1023(double) added to it.
When the number is normalised, the first digit, immediately before the binary point, will always be 1.
This digit is made implicit and the remaining fraction part of the mantissa is stored in the next 23 bits (float) or 53 bits (double).
The value of the number is
(-1)**Sign * ( 1 + Mantissa ) 2**(Exponent - Bias)
where
Sign is the sign bit (0 or 1)
Mantissa is the mantissa part with the point assumed at the start.
Exponent is the exponent part treated as a normal binary integer.
Bias is 127 for float, 1023 for double