java.lang

Class Double

Implemented Interfaces:
Comparable<T>, Serializable

public final class Double
extends Number
implements Comparable<T>

Instances of class Double represent primitive double values. Additionally, this class provides various helper functions and variables related to doubles.
Since:
1.0
See Also:
Serialized Form

Field Summary

static double
MAX_VALUE
The maximum positive value a double may represent is 1.7976931348623157e+308.
static double
MIN_VALUE
The minimum positive value a double may represent is 5e-324.
static double
NEGATIVE_INFINITY
The value of a double representation -1.0/0.0, negative infinity.
static double
NaN
All IEEE 754 values of NaN have the same value in Java.
static double
POSITIVE_INFINITY
The value of a double representing 1.0/0.0, positive infinity.
static int
SIZE
The number of bits needed to represent a double.
static Class
TYPE
The primitive type double is represented by this Class object.

Constructor Summary

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

Method Summary

byte
byteValue()
Return the value of this Double as a byte.
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.
int
compareTo(Double d)
Compare two Doubles numerically by comparing their double values.
static long
doubleToLongBits(double value)
Convert the double to the IEEE 754 floating-point "double format" bit layout.
static long
doubleToRawLongBits(double value)
Convert the double to the IEEE 754 floating-point "double format" bit layout.
double
doubleValue()
Return the value of this Double.
boolean
equals(Object obj)
Returns true if obj is an instance of Double and represents the same double value.
float
floatValue()
Return the value of this Double as a float.
int
hashCode()
Return a hashcode representing this Object.
int
intValue()
Return the value of this Double as an int.
boolean
isInfinite()
Return true if the value of this Double is the same as NEGATIVE_INFINITY or POSITIVE_INFINITY, otherwise return false.
static boolean
isInfinite(double v)
Return true if the double has a value equal to either NEGATIVE_INFINITY or POSITIVE_INFINITY, otherwise return false.
boolean
isNaN()
Return true if the value of this Double is the same as NaN, otherwise return false.
static boolean
isNaN(double v)
Return true if the double has the same value as NaN, otherwise return false.
static double
longBitsToDouble(long bits)
Convert the argument in IEEE 754 floating-point "double format" bit layout to the corresponding float.
long
longValue()
Return the value of this Double as a long.
static double
parseDouble(String str)
Parse the specified String as a double.
short
shortValue()
Return the value of this Double as a short.
static String
toHexString(double d)
Convert a double value to a hexadecimal string.
String
toString()
Convert the double value of this Double to a String.
static String
toString(double d)
Convert the double to a String.
static Double
valueOf(double val)
Returns a Double object wrapping the value.
static Double
valueOf(String s)
Create a new Double object using the String.

Methods inherited from class java.lang.Number

byteValue, doubleValue, floatValue, intValue, longValue, shortValue

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

MAX_VALUE

public static final double MAX_VALUE
The maximum positive value a double may represent is 1.7976931348623157e+308.
Field Value:
2.147483648E9

MIN_VALUE

public static final double MIN_VALUE
The minimum positive value a double may represent is 5e-324.
Field Value:
0.0

NEGATIVE_INFINITY

public static final double NEGATIVE_INFINITY
The value of a double representation -1.0/0.0, negative infinity.
Field Value:
-2.147483648E9

NaN

public static final double NaN
All IEEE 754 values of NaN have the same value in Java.
Field Value:
0.0

POSITIVE_INFINITY

public static final double POSITIVE_INFINITY
The value of a double representing 1.0/0.0, positive infinity.
Field Value:
2.147483648E9

SIZE

public static final int SIZE
The number of bits needed to represent a double.
Field Value:
64
Since:
1.5

TYPE

public static final Class TYPE
The primitive type double is represented by this Class object.
Since:
1.1

Constructor Details

Double

public Double(double value)
Create a Double from the primitive double specified.
Parameters:
value - the double argument

Double

public Double(String s)
Create a Double from the specified String. This method calls Double.parseDouble().
Parameters:
s - the String to convert
Throws:
NumberFormatException - if s cannot be parsed as a double
NullPointerException - if s is null

Method Details

byteValue

public byte byteValue()
Return the value of this Double as a byte.
Overrides:
byteValue in interface Number
Returns:
the byte value
Since:
1.1

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.
Parameters:
x - the first double to compare
y - the second double to compare
Returns:
the comparison
Since:
1.4

compareTo

public int compareTo(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.
Parameters:
d - the Double to compare
Returns:
the comparison
Since:
1.2

doubleToLongBits

public 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:
value - the double to convert
Returns:
the bits of the double

doubleToRawLongBits

public 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:
value - the double to convert
Returns:
the bits of the double

doubleValue

public double doubleValue()
Return the value of this Double.
Overrides:
doubleValue in interface Number
Returns:
the double value

equals

public boolean equals(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()).

Overrides:
equals in interface Object
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.
Overrides:
floatValue in interface Number
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))
.
Overrides:
hashCode in interface Object
Returns:
this Object's hash code

intValue

public int intValue()
Return the value of this Double as an int.
Overrides:
intValue in interface Number
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 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

longValue

public long longValue()
Return the value of this Double as a long.
Overrides:
longValue in interface Number
Returns:
the long value

parseDouble

public static double parseDouble(String str)
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 NumberFormat.

Parameters:
str - the String to convert
Returns:
the double value of s
Throws:
NumberFormatException - if s cannot be parsed as a double
NullPointerException - if s is null
Since:
1.2

shortValue

public short shortValue()
Return the value of this Double as a short.
Overrides:
shortValue in interface Number
Returns:
the short value
Since:
1.1

toHexString

public static String toHexString(double d)
Convert a double value to a hexadecimal string. This converts as follows:
  • A NaN value is converted to the string "NaN".
  • Positive infinity is converted to the string "Infinity".
  • Negative infinity is converted to the string "-Infinity".
  • For all other values, the first character of the result is '-' if the value is negative. This is followed by '0x1.' if the value is normal, and '0x0.' if the value is denormal. This is then followed by a (lower-case) hexadecimal representation of the mantissa, with leading zeros as required for denormal values. The next character is a 'p', and this is followed by a decimal representation of the unbiased exponent.
Parameters:
d - the double value
Returns:
the hexadecimal string representation
Since:
1.5

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.
Overrides:
toString in interface Object
Returns:
the String representation

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
NaNNaN
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 NumberFormat.

Parameters:
d - the double to convert
Returns:
the String representing the double

valueOf

public static Double valueOf(double val)
Returns a Double object wrapping the value. In contrast to the Double constructor, this method may cache some values. It is used by boxing conversion.
Parameters:
val - the value to wrap
Returns:
the Double
Since:
1.5

valueOf

public static Double valueOf(String s)
Create a new Double object using the String.
Parameters:
s - the String to convert
Returns:
the new Double
Throws:
NumberFormatException - if s cannot be parsed as a double
NullPointerException - if s is null.

Double.java -- object wrapper for double Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.