IEEE 754 double-precision floating point: the gold standard for numerical accuracy
An FP64 number uses 64 bits divided into three fields:
The sign bit determines positive (0) or negative (1). The exponent is stored with a bias of 1023. The mantissa stores 52 bits of fractional precision, with an implicit leading 1 for normal numbers.
FP64, also known as double precision or simply double, is the highest-precision standard IEEE 754 format in common use. It is the default numeric type in many languages including Python, JavaScript, R, and MATLAB.
With 11 exponent bits, FP64 spans an enormous range, roughly 600 orders of magnitude (from about 10-308 to 10308). The 52 mantissa bits provide approximately 15.9 decimal digits of precision, making it suitable for scientific computing, financial calculations, and any application requiring high accuracy.
In JavaScript, all numbers are FP64 by default (the Number type). In C/C++, it's the double type. In Python, float is actually FP64 (double precision), and numpy.float64 explicitly represents it.
The implicit leading 1 gives an effective 53-bit mantissa. The exponent bias of 1023 means a stored value of 1023 represents an actual exponent of 0. The bias is calculated as 2(e-1) - 1, where e is the number of exponent bits (11).
When the stored exponent is 0, the number is subnormal. The implicit leading bit becomes 0 instead of 1, and the exponent is fixed at -1022.
Click any bit to flip it, drag the slider, or enter a decimal or hex value. The graphs show how values are distributed across the encoding space.
Key values and their exact binary representations:
See how FP64 compares to other floating-point formats:
float, JavaScript Number, R, and MATLAB all use FP64 as their default numeric type. The ONNX specification defines it as DOUBLE = 11.f64 unless explicitly annotated. The NVVM dialect maps f64 to m8n8k4 Tensor Core MMA shapes on Ampere+.