Skip to main content
Engineering LibreTexts

2.9: Floating-Point Data Type

  • Page ID
    10624
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Overview

    A floating-point data type uses a formulaic representation of real numbers as an approximation so as to support a trade-off between range and precision. For this reason, floating-point computation is often found in systems which include very small and very large real numbers, which require fast processing times. A number is, in general, represented approximately to a fixed number of significant digits and scaled using an exponent in some fixed base.[1]

    Discussion

    The floating-point data type is a family of data types that act alike and differ only in the size of their domains (the allowable values). The floating-point family of data types represents number values with fractional parts. They are technically stored as two integer values: a mantissa and an exponent. The floating-point family has the same attributes and acts or behaves similarly in all programming languages. They can always store negative or positive values thus they always are signed; unlike the integer data type that could be unsigned. The domain for floating-point data types varies because they could represent very large numbers or very small numbers. Rather than talk about the actual values, we mention the precision. The more bytes of storage the larger the mantissa and exponent, thus more precision.

    Language Reserved Word Size Precision Range
    C++ float 32 bits / 4 bytes 7 decimal digits ±3.40282347E+38
    C++ double 64 bits / 8 bytes 15 decimal digits ±1.79769313486231570E+308
    C# float 32 bits / 4 bytes 7 decimal digits ±3.40282347E+38
    C# double 32 bits / 4 bytes 15 decimal digits ±1.79769313486231570E+308
    Java float 32 bits / 4 bytes 7 decimal digits ±3.40282347E+38
    Java double 32 bits / 4 bytes 15 decimal digits ±1.79769313486231570E+308
    JavaScript Number 64 bits / 8 bytes 15 decimal digits ±1.79769313486231570E+308
    Python float() 64 bits / 8 bytes 15 decimal digits ±1.79769313486231570E+308
    Swift Float 32 bits / 4 bytes 7 decimal digits ±3.40282347E+38
    Swift Double 64 bits / 8 bytes 15 decimal digits ±1.79769313486231570E+308

    Key Terms

    double
    The most often used floating-point family data type used.
    mantissa exponent
    The two integer parts of a floating-point value.
    precision
    The effect on the domain of floating-point values given a larger or smaller storage area in bytes.

    2.9: Floating-Point Data Type is shared under a CC BY-SA 4.0 license and was authored, remixed, and/or curated by LibreTexts.

    • Was this article helpful?