Index (Frames) | Index (No Frames) | Package | Package Tree | Tree
java.lang

Class Double

java.lang.Object
|
+--java.lang.Number
   |
   +--java.lang.Double

All Implemented Interfaces:

Comparable, Serializable


public final class Double

extends Number

implements Comparable

Instances of class Double represent primitive double values. Additionally, this class provides various helper functions and variables related to doubles.

Since:Authors:

Field Summary

static doubleMAX_VALUE

The maximum positive value a double may represent is 1.7976931348623157e+308.
static doubleMIN_VALUE

The minimum positive value a double may represent is 5e-324.
static doubleNEGATIVE_INFINITY

The value of a double representation -1.0/0.0, negative infinity.
static doubleNaN

All IEEE 754 values of NaN have the same value in Java.
static doublePOSITIVE_INFINITY

The value of a double representing 1.0/0.0, positive infinity.
static java.lang.ClassTYPE

The primitive type double is represented by this Class object.

Constructor Summary

Double(double value)

Create a Double from the primitive double specified.
Double(java.lang.String s)

Create a Double from the specified String.

Method Summary

bytebyteValue()

Return the value of this Double as a byte.
static intcompare(double x, double y)

Behaves like new Double(x).compareTo(new Double(y)); in other words this compares two doubles, special casing NaN and zero, without the overhead of objects.
intcompareTo(java.lang.Double d)

Compare two Doubles numerically by comparing their double values.
intcompareTo(java.lang.Object o)

Behaves like compareTo(Double) unless the Object is not an Double.
static longdoubleToLongBits(double value)

Convert the double to the IEEE 754 floating-point "double format" bit layout.
static longdoubleToRawLongBits(double value)

Convert the double to the IEEE 754 floating-point "double format" bit layout.
doubledoubleValue()

Return the value of this Double.
booleanequals(java.lang.Object obj)

Returns true if obj is an instance of Double and represents the same double value.
floatfloatValue()

Return the value of this Double as a float.
inthashCode()

Return a hashcode representing this Object.
intintValue()

Return the value of this Double as an int.
static booleanisInfinite(double v)

Return true if the double has a value equal to either NEGATIVE_INFINITY or POSITIVE_INFINITY, otherwise return false.
booleanisInfinite()

Return true if the value of this Double is the same as NEGATIVE_INFINITY or POSITIVE_INFINITY, otherwise return false.
static booleanisNaN(double v)

Return true if the double has the same value as NaN, otherwise return false.
booleanisNaN()

Return true if the value of this Double is the same as NaN, otherwise return false.
static doublelongBitsToDouble(long bits)

Convert the argument in IEEE 754 floating-point "double format" bit layout to the corresponding float.
longlongValue()

Return the value of this Double as a long.
static doubleparseDouble(java.lang.String s)

Parse the specified String as a double.
shortshortValue()

Return the value of this Double as a short.
static java.lang.StringtoString(double d)

Convert the double to a String.
java.lang.StringtoString()

Convert the double value of this Double to a String.
static java.lang.DoublevalueOf(java.lang.String s)

Create a new Double object using the String.

Field Details

MAX_VALUE

public static final double MAX_VALUE

The maximum positive value a double may represent is 1.7976931348623157e+308.


MIN_VALUE

public static final double MIN_VALUE

The minimum positive value a double may represent is 5e-324.


NEGATIVE_INFINITY

public static final double NEGATIVE_INFINITY

The value of a double representation -1.0/0.0, negative infinity.


NaN

public static final double NaN

All IEEE 754 values of NaN have the same value in Java.


POSITIVE_INFINITY

public static final double POSITIVE_INFINITY

The value of a double representing 1.0/0.0, positive infinity.


TYPE

public static final Class TYPE

The primitive type double is represented by this Class object.

Since:

Constructor Details

Double

public Double(double value)

Create a Double from the primitive double specified.

Parameters:


Double

public Double(java.lang.String s)

Create a Double from the specified String. This method calls Double.parseDouble().

Parameters:

Throws:

See Also:


Method Details

byteValue

public byte byteValue()

Return the value of this Double as a byte.

Since:Returns:


compare

public static int compare(double x, double y)

Behaves like new Double(x).compareTo(new Double(y)); in other words this compares two doubles, special casing NaN and zero, without the overhead of objects.

Since:Parameters:

Returns:


compareTo

public int compareTo(java.lang.Double d)

Compare two Doubles numerically by comparing their double values. The result is positive if the first is greater, negative if the second is greater, and 0 if the two are equal. However, this special cases NaN and signed zero as follows: NaN is considered greater than all other doubles, including POSITIVE_INFINITY, and positive zero is considered greater than negative zero.

Since:Parameters:

Returns:


compareTo

public int compareTo(java.lang.Object o)

Behaves like compareTo(Double) unless the Object is not an Double.

Since:Parameters:

Returns:

Throws:

See Also:


doubleToLongBits

public native static long doubleToLongBits(double value)

Convert the double to the IEEE 754 floating-point "double format" bit layout. Bit 63 (the most significant) is the sign bit, bits 62-52 (masked by 0x7ff0000000000000L) represent the exponent, and bits 51-0 (masked by 0x000fffffffffffffL) are the mantissa. This function collapses all versions of NaN to 0x7ff8000000000000L. The result of this function can be used as the argument to Double.longBitsToDouble(long) to obtain the original double value.

Parameters:

Returns:

See Also:


doubleToRawLongBits

public native static long doubleToRawLongBits(double value)

Convert the double to the IEEE 754 floating-point "double format" bit layout. Bit 63 (the most significant) is the sign bit, bits 62-52 (masked by 0x7ff0000000000000L) represent the exponent, and bits 51-0 (masked by 0x000fffffffffffffL) are the mantissa. This function leaves NaN alone, rather than collapsing to a canonical value. The result of this function can be used as the argument to Double.longBitsToDouble(long) to obtain the original double value.

Parameters:

Returns:

See Also:


doubleValue

public double doubleValue()

Return the value of this Double.

Returns:


equals

public boolean equals(java.lang.Object obj)

Returns true if obj is an instance of Double and represents the same double value. Unlike comparing two doubles with ==, this treats two instances of Double.NaN as equal, but treats 0.0 and -0.0 as unequal.

Note that d1.equals(d2) is identical to doubleToLongBits(d1.doubleValue()) == doubleToLongBits(d2.doubleValue()).

Parameters:

  • obj - the object to compare
Returns:

  • whether the objects are semantically equal

floatValue

public float floatValue()

Return the value of this Double as a float.

Returns:

  • the float value

hashCode

public int hashCode()

Return a hashcode representing this Object. Double's hash code is calculated by:
long v = Double.doubleToLongBits(doubleValue());
int hash = (int)(v^(v>>32))
.

Returns:

  • this Object's hash code
See Also:


intValue

public int intValue()

Return the value of this Double as an int.

Returns:

  • the int value

isInfinite

public boolean isInfinite()

Return true if the value of this Double is the same as NEGATIVE_INFINITY or POSITIVE_INFINITY, otherwise return false.

Returns:

  • whether this Double is (-/+) infinity

isInfinite

public static boolean isInfinite(double v)

Return true if the double has a value equal to either NEGATIVE_INFINITY or POSITIVE_INFINITY, otherwise return false.

Parameters:

  • v - the double to compare
Returns:

  • whether the argument is (-/+) infinity.

isNaN

public boolean isNaN()

Return true if the value of this Double is the same as NaN, otherwise return false.

Returns:

  • whether this Double is NaN

isNaN

public static boolean isNaN(double v)

Return true if the double has the same value as NaN, otherwise return false.

Parameters:

  • v - the double to compare
Returns:

  • whether the argument is NaN.

longBitsToDouble

public native static double longBitsToDouble(long bits)

Convert the argument in IEEE 754 floating-point "double format" bit layout to the corresponding float. Bit 63 (the most significant) is the sign bit, bits 62-52 (masked by 0x7ff0000000000000L) represent the exponent, and bits 51-0 (masked by 0x000fffffffffffffL) are the mantissa. This function leaves NaN alone, so that you can recover the bit pattern with Double.doubleToRawLongBits(double).

Parameters:

  • bits - the bits to convert
Returns:

  • the double represented by the bits
See Also:


longValue

public long longValue()

Return the value of this Double as a long.

Returns:

  • the long value

parseDouble

public native static double parseDouble(java.lang.String s)

Parse the specified String as a double. The extended BNF grammar is as follows:
 DecodableString:
      ( [ - | + ] NaN )
    | ( [ - | + ] Infinity )
    | ( [ - | + ] FloatingPoint
              [ f | F | d
                | D] )
 FloatingPoint:
      ( { Digit }+ [ . { Digit } ]
              [ Exponent ] )
    | ( . { Digit }+ [ Exponent ] )
 Exponent:
      ( ( e | E )
              [ - | + ] { Digit }+ )
 Digit: '0' through '9'
 

NaN and infinity are special cases, to allow parsing of the output of toString. Otherwise, the result is determined by calculating n * 10exponent to infinite precision, then rounding to the nearest double. Remember that many numbers cannot be precisely represented in floating point. In case of overflow, infinity is used, and in case of underflow, signed zero is used. Unlike Integer.parseInt, this does not accept Unicode digits outside the ASCII range.

If an unexpected character is found in the String, a NumberFormatException will be thrown. Leading and trailing 'whitespace' is ignored via String.trim(), but spaces internal to the actual number are not allowed.

To parse numbers according to another format, consider using java.text.NumberFormat.

Since:
  • 1.2
Parameters:

  • s - the String to convert
Returns:

  • the double value of s
Throws:

See Also:


shortValue

public short shortValue()

Return the value of this Double as a short.

Since:
  • 1.1
Returns:

  • the short value

toString

public String toString()

Convert the double value of this Double to a String. This method calls Double.toString(double) to do its dirty work.

Returns:

  • the String representation
See Also:


toString

public static String toString(double d)

Convert the double to a String. Floating-point string representation is fairly complex: here is a rundown of the possible values. "[-]" indicates that a negative sign will be printed if the value (or exponent) is negative. "<number>" means a string of digits ('0' to '9'). "<digit>" means a single digit ('0' to '9').
Value of DoubleString Representation
[+-] 0 [-]0.0
Between [+-] 10-3 and 107, exclusive [-]number.number
Other numeric value [-]<digit>.<number> E[-]<number>
[+-] infinity [-]Infinity
NaN NaN
Yes, negative zero is a possible value. Note that there is always a . and at least one digit printed after it: even if the number is 3, it will be printed as 3.0. After the ".", all digits will be printed except trailing zeros. The result is rounded to the shortest decimal number which will parse back to the same double.

To create other output formats, use java.text.NumberFormat.

Parameters:

  • d - the double to convert
Returns:

  • the String representing the double

valueOf

public static Double valueOf(java.lang.String s)

Create a new Double object using the String.

Parameters:

  • s - the String to convert
Returns:

  • the new Double
Throws:

See Also: