Java Data Type Tutorial - Java double Data Type

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 10308 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.

Double Literals

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.

Double.POSITIVE_INFINITYPositive infinity of type double
Double.NEGATIVE_INFINITY Negative infinity of type double
Double.NaNNot 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 10308
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).