Doubleprecision floatingpoint format (sometimes called FP64 or float64) is a floatingpoint number format, usually occupying 64 Bit in computer memory; it represents a wide dynamic range of numeric values by using a floating radix point.
Double precision may be chosen when the range or precision of single precision would be insufficient.
In the IEEE 7542008 standardization, the 64bit base2 format is officially referred to as binary64; it was called double in IEEE 7541985. IEEE 754 specifies additional floatingpoint formats, including 32bit base2 single precision and, more recently, base10 representations (decimal floating point).
One of the first programming languages to provide floatingpoint data types was Fortran. Before the widespread adoption of IEEE 7541985, the representation and properties of floatingpoint data types depended on the computer manufacturer and computer model, and upon decisions made by programminglanguage implementers. E.g., GWBASIC's doubleprecision data type was the 64bit MBF floatingpoint format.
The exponent field is an 11bit unsigned integer from 0 to 2047, in Exponent bias: an exponent value of 1023 represents the actual zero. Exponents range from −1022 to +1023 because exponents of −1023 (all 0s) and +1024 (all 1s) are reserved for special numbers.
The 53bit significand precision gives from 15 to 17 significant decimal digits precision (2^{−53} ≈ 1.11 × 10^{−16}). If a decimal string with at most 15 significant digits is converted to the IEEE 754 doubleprecision format, giving a normal number, and then converted back to a decimal string with the same number of digits, the final result should match the original string. If an IEEE 754 doubleprecision number is converted to a decimal string with at least 17 significant digits, and then converted back to doubleprecision representation, the final result must match the original number.
The format is written with the significand having an implicit integer bit of value 1 (except for special data, see the exponent encoding below). With the 52 bits of the fraction (F) significand appearing in the memory format, the total precision is therefore 53 bits (approximately 16 decimal digits, 53 log_{10}(2) ≈ 15.955). The bits are laid out as follows:
The real value assumed by a given 64bit doubleprecision datum with a given Exponent bias $e$ and a 52bit fraction is
Between 2^{52}=4,503,599,627,370,496 and 2^{53}=9,007,199,254,740,992 the representable numbers are exactly the integers. For the next range, from 2^{53} to 2^{54}, everything is multiplied by 2, so the representable numbers are the even ones, etc. Conversely, for the previous range from 2^{51} to 2^{52}, the spacing is 0.5, etc.
The spacing as a fraction of the numbers in the range from 2^{ n} to 2^{ n+1} is 2^{ n−52}. The maximum relative rounding error when rounding a number to the nearest representable one (the machine epsilon) is therefore 2^{−53}.
The 11 bit width of the exponent allows the representation of numbers between 10^{−308} and 10^{308}, with full 15–17 decimal digits precision. By compromising precision, the subnormal representation allows even smaller values up to about 5 × 10^{−324}.
e =00000000001<sub>2</sub>=001<sub>16</sub>=1:  $2^\{11023\}=2^\{1022\}$  (smallest exponent for normal numbers)  
e =01111111111<sub>2</sub>=3ff<sub>16</sub>=1023:  $2^\{10231023\}=2^0$  (zero offset)  
e =10000000101<sub>2</sub>=405<sub>16</sub>=1029:  $2^\{10291023\}=2^6$  
e =11111111110<sub>2</sub>=7fe<sub>16</sub>=2046:  $2^\{20461023\}=2^\{1023\}$  (highest exponent) 
The exponents 000<sub>16</sub> and 7ff<sub>16</sub> have a special meaning:
Except for the above exceptions, the entire doubleprecision number is described by:
In the case of ( e = 0) the doubleprecision number is described by:
0 01111111111 0000000000000000000000000000000000000000000000000000_{2} ≙ 3FF0 0000 0000 0000_{16} ≙ +2^{0} × 1 = 1 
0 01111111111 0000000000000000000000000000000000000000000000000001_{2} ≙ 3FF0 0000 0000 0001_{16} ≙ +2^{0} × (1 + 2^{−52}) ≈ 1.0000000000000002, the smallest number > 1 
0 01111111111 0000000000000000000000000000000000000000000000000010_{2} ≙ 3FF0 0000 0000 0002_{16} ≙ +2^{0} × (1 + 2^{−51}) ≈ 1.0000000000000004 
0 10000000000 0000000000000000000000000000000000000000000000000000_{2} ≙ 4000 0000 0000 0000_{16} ≙ +2^{1} × 1 = 2 
1 10000000000 0000000000000000000000000000000000000000000000000000_{2} ≙ C000 0000 0000 0000_{16} ≙ −2^{1} × 1 = −2 
0 10000000000 1000000000000000000000000000000000000000000000000000_{2} ≙ 4008 0000 0000 0000_{16} ≙ +2^{1} × 1.1_{2} = 11_{2} = 3 
0 10000000001 0000000000000000000000000000000000000000000000000000_{2} ≙ 4010 0000 0000 0000_{16} ≙ +2^{2} × 1 = 100_{2} = 4 
0 10000000001 0100000000000000000000000000000000000000000000000000_{2} ≙ 4014 0000 0000 0000_{16} ≙ +2^{2} × 1.01_{2} = 101_{2} = 5 
0 10000000001 1000000000000000000000000000000000000000000000000000_{2} ≙ 4018 0000 0000 0000_{16} ≙ +2^{2} × 1.1_{2} = 110_{2} = 6 
0 10000000011 0111000000000000000000000000000000000000000000000000_{2} ≙ 4037 0000 0000 0000_{16} ≙ +2^{4} × 1.0111_{2} = 10111_{2} = 23 
0 01111111000 1000000000000000000000000000000000000000000000000000_{2} ≙ 3F88 0000 0000 0000_{16} ≙ +2^{−7} × 1.1_{2} = 0.00000011_{2} = 0.01171875 (3/256) 
0 00000000000 0000000000000000000000000000000000000000000000000001_{2} ≙ 0000 0000 0000 0001_{16} ≙ +2^{−1022} × 2^{−52} = 2^{−1074} ≈ 4.9406564584124654 × 10^{−324} (Min. subnormal positive double) 
0 00000000000 1111111111111111111111111111111111111111111111111111_{2} ≙ 000F FFFF FFFF FFFF_{16} ≙ +2^{−1022} × (1 − 2^{−52}) ≈ 2.2250738585072009 × 10^{−308} (Max. subnormal double) 
0 00000000001 0000000000000000000000000000000000000000000000000000_{2} ≙ 0010 0000 0000 0000_{16} ≙ +2^{−1022} × 1 ≈ 2.2250738585072014 × 10^{−308} (Min. normal positive double) 
0 11111111110 1111111111111111111111111111111111111111111111111111_{2} ≙ 7FEF FFFF FFFF FFFF_{16} ≙ +2^{1023} × (1 + (1 − 2^{−52})) ≈ 1.7976931348623157 × 10^{308} (Max. double) 
0 00000000000 0000000000000000000000000000000000000000000000000000_{2} ≙ 0000 0000 0000 0000_{16} ≙ +0 
1 00000000000 0000000000000000000000000000000000000000000000000000_{2} ≙ 8000 0000 0000 0000_{16} ≙ −0 
0 11111111111 0000000000000000000000000000000000000000000000000000_{2} ≙ 7FF0 0000 0000 0000_{16} ≙ +∞ (positive infinity) 
1 11111111111 0000000000000000000000000000000000000000000000000000_{2} ≙ FFF0 0000 0000 0000_{16} ≙ −∞ (negative infinity) 
0 11111111111 0000000000000000000000000000000000000000000000000001_{2} ≙ 7FF0 0000 0000 0001_{16} ≙ NaN (sNaN on most processors, such as x86 and ARM) 
0 11111111111 1000000000000000000000000000000000000000000000000001_{2} ≙ 7FF8 0000 0000 0001_{16} ≙ NaN (qNaN on most processors, such as x86 and ARM) 
0 11111111111 1111111111111111111111111111111111111111111111111111_{2} ≙ 7FFF FFFF FFFF FFFF_{16} ≙ NaN (an alternative encoding of NaN) 
0 01111111101 0101010101010101010101010101010101010101010101010101_{2} = 3FD5 5555 5555 5555_{16} ≙ +2^{−2} × (1 + 2^{−2} + 2^{−4} + ... + 2^{−52}) ≈ ^{1}/_{3} 
0 10000000000 1001001000011111101101010100010001000010110100011000_{2} = 4009 21FB 5444 2D18_{16} ≈ pi 
Encodings of qNaN and sNaN are not completely specified in IEEE 754 and depend on the processor. Most processors, such as the x86 family and the ARM architecture family processors, use the most significant bit of the significand field to indicate a quiet NaN; this is what is recommended by IEEE 754. The PARISC processors use the bit to indicate a signaling NaN.
By default, ^{1}/_{3} rounds down, instead of up like single precision, because of the odd number of bits in the significand.
In more detail:
Given the hexadecimal representation 3FD5 5555 5555 5555_{16}, Sign = 0 Exponent = 3FD_{16} = 1021 Exponent Bias = 1023 (constant value; see above) Fraction = 5 5555 5555 5555_{16} Value = 2^{(Exponent − Exponent Bias)} × 1.Fraction – Note that Fraction must not be converted to decimal here = 2^{−2} × (15 5555 5555 5555_{16} × 2^{−52}) = 2^{−54} × 15 5555 5555 5555_{16} = 0.333333333333333314829616256247390992939472198486328125 ≈ 1/3
Additionally, many mathematical functions (e.g., sin, cos, atan2, log, exp and sqrt) need more computations to give accurate doubleprecision results, and are therefore slower.

