Double-precision floating-point format

IEEE 754 specifies additional floating-point formats, including 32-bit base-2 single precision and, more recently, base-10 representations (decimal floating point).

Double-precision binary floating-point is a commonly used format on PCs, due to its wider range over single-precision floating point, in spite of its performance and bandwidth cost.

[1] The format is written with the significand having an implicit integer bit of value 1 (except for special data, see the exponent encoding below).

The 11 bit width of the exponent allows the representation of numbers between 10−308 and 10308, with full 15–17 decimal digits precision.

Examples of such representations would be: The exponents 00016 and 7ff16 have a special meaning: where F is the fractional part of the significand.

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: Using double-precision floating-point variables is usually slower than working with their single precision counterparts.

[4] Additionally, many mathematical functions (e.g., sin, cos, atan2, log, exp and sqrt) need more computations to give accurate double-precision results, and are therefore slower.

However, on 32-bit x86 with extended precision by default, some compilers may not conform to the C standard or the arithmetic may suffer from double rounding.

Common Lisp provides the types SHORT-FLOAT, SINGLE-FLOAT, DOUBLE-FLOAT and LONG-FLOAT.

Version 1.2 allowed implementations to bring extra precision in intermediate computations for platforms like x87.