The double data type uses 64 bits to store a floating-point number. double value is also known as a double-precision floating-point number.

It can represent a number as small as 4.9 x 10^{-324} and as big as 1.7 x 10^{308} in magnitude.

It could be positive or negative.

All real numbers are called double literals. A double literal may optionally end with d or D, for example, 1.27d.

The suffix d or D is optional in double literals.

Both 19.7 and 19.7d represent the same double literal.

A double literal can be expressed in the following two formats:

- Decimal number format
- Scientific notation

Examples of double literals in decimal number format are as follows:

double d1 = 8D ; double d2 = 8.; double d3 = 8.0; double d4 = 8.D; double d5 = 78.9867; double d6 = 45.0;

8 is an int literal whereas 8D, 8., and 8.0 are double literals.

We can also use scientific notation to express double literals.

double d1 = 32.5E-1; double d2 = 0.325E+1; double d3 = 0.325E1; double d4 = 0.0325E2; double d5 = 0.0325e2; double d6 = 32.5E-1D; double d7 = 0.325E+1d; double d8 = 0.325E1d; double d9 = 0.0325E2d;

The double data type defines two zeros, two infinities, and a NaN. They are represented by constants in the Double class.

The following table lists these constants and their meanings.

Constants | Meaning |
---|---|

Double.POSITIVE_INFINITY | Positive infinity of type double |

Double.NEGATIVE_INFINITY | Negative infinity of type double |

Double.NaN | Not a Number of type double |

Double.MAX_VALUE | The largest positive value that can be represented in a double variable. This is equal
to 1.7 x 10^{308} |

Double.MIN_VALUE | The smallest positive value greater than zero that can be represented in a double variable. This is equal to 4.9 x 10^{-324}. |

The value of all integral types (int, long, byte, short, char) and float can be assigned to a variable of the double data type without using an explicit cast.

```
int num1 = 15;
double salary = num1;
salary = 12345;
double bigNum = Double.MAX_VALUE;
bigNum = 1234L;
double justAChar = 'A';
double dInf = Double.POSITIVE_INFINITY;
double dNan = Double.NaN;
```

A double value must be cast to the integral type before it is assigned to a variable of any integral data type (int, long, byte, short, or char).