Thursday, 17 February 2011

Float vs Double in java

Floating-point numbers, also known as real numbers, are used when evaluating expressions that require fractional precision. For example, calculations such as square root, or transcendentals such as sine and cosine, result in a value whose precision requires a floating-point type. Java implements the standard (IEEE–754) set of floatingpoint types and operators. There are two kinds of floating-point types, float and double, which represent single- and double-precision numbers, respectively. Their width and ranges are shown here:

Name
Width in Bits
Range

double
64
1 .7e–308 to 1.7e+308

float
32
3 .4e–038 to 3.4e+038

Each of these floating-point types is examined next.

Float
The type float specifies a single-precision value that uses 32 bits of storage. Single precision is faster on some processors and takes half as much space as double precision, but will become imprecise when the values are either very large or very small. Variables of type float are useful when you need a fractional component, but don't require a large degree of precision.

Double precision, as denoted by the double keyword, uses 64 bits to store a value. Double precision is actually faster than single precision on some modern processors that have been optimized for high-speed mathematical calculations. All transcendental math functions, such as sin( ), cos( ), and sqrt( ), return double values. When you need to maintain accuracy over many iterative calculations, or are manipulating large-valued numbers, double is the best choice.

Also note when we say:

float f = 45.3 it implies float f = 45.3f;

This is not the case with double.

1 comment:

  1. The 3 main differences between float and double will be:

    Size: Float is of size 32 bits while double is of size 64 bits.
    Precision: Float can allow only 7 bits of precision. Double allocates up to 15 bits of precision.
    You can check more differences from this infographic HERE.

    ReplyDelete