|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.lang.Number java.lang.Double
public final class Double
Double
類別在物件中包裹一個基本型別 double
的值。每個 Double
型別的物件都包含一個 double
型別的欄位。
此外,該類別還提供多個方法,可以將 double
轉換為 String
,將 String
轉換為 double
,也提供了其他一些處理 double
時有用的常數和方法。
欄位摘要 | |
---|---|
static int |
MAX_EXPONENT
有限 double 變數可能具有的最大指數。 |
static double |
MAX_VALUE
保存 double 型別的最大正有限值的常數,最大正有限值為 (2-2-52)·21023。 |
static int |
MIN_EXPONENT
標準化 double 變數可能具有的最小指數。 |
static double |
MIN_NORMAL
保存 double 型別的最小正標準值的常數,最小正標準值為 2-1022。 |
static double |
MIN_VALUE
保存 double 型別的最小正非零值的常數,最小正非零值為 2-1074。 |
static double |
NaN
保存 double 型別的 NaN 值的常數。 |
static double |
NEGATIVE_INFINITY
保存 double 型別的負無窮大值的常數。 |
static double |
POSITIVE_INFINITY
保存 double 型別的正無窮大值的常數。 |
static int |
SIZE
用於表示 double 值的位數。 |
static Class<Double> |
TYPE
表示基本型別 double 的 Class 實例。 |
建構子摘要 | |
---|---|
Double(double value)
建構一個新分派的 Double 物件,它表示基本的 double 參數。 |
|
Double(String s)
建構一個新分派的 Double 物件,表示用字元串表示的 double 型別的浮點值。 |
方法摘要 | |
---|---|
byte |
byteValue()
以 byte 形式返回此 Double 的值(通過強制轉換為 byte )。 |
static int |
compare(double d1,
double d2)
比較兩個指定的 double 值。 |
int |
compareTo(Double anotherDouble)
對兩個 Double 物件所表示的數值進行比較。 |
static long |
doubleToLongBits(double value)
根據 IEEE 754 浮點雙精度格式 ("double format") 位佈局,返回指定浮點值的表示形式。 |
static long |
doubleToRawLongBits(double value)
根據 IEEE 754 浮點“雙精度格式”位佈局,返回指定浮點值的表示形式,並保留 NaN 值。 |
double |
doubleValue()
返回此 Double 物件的 double 值。 |
boolean |
equals(Object obj)
將此物件與指定物件比較。 |
float |
floatValue()
返回此 Double 物件的 float 值。 |
int |
hashCode()
返回此 Double 物件的雜湊碼。 |
int |
intValue()
以 int 形式返回此 Double 的值(通過強制轉換為 int 型別)。 |
boolean |
isInfinite()
如果此 Double 值在數值上為無窮大,則返回 true ;否則返回 false 。 |
static boolean |
isInfinite(double v)
如果指定數在數值上為無窮大,則返回 true ;否則返回 false 。 |
boolean |
isNaN()
如果此 Double 值是非數字(NaN)值,則返回 true ;否則返回 false 。 |
static boolean |
isNaN(double v)
如果指定的數是一個 NaN 值,則返回 true ;否則返回 false 。 |
static double |
longBitsToDouble(long bits)
返回對應於給定位表示形式的 double 值。 |
long |
longValue()
以 long 形式返回此 Double 的值(通過強制轉換為 long 型別)。 |
static double |
parseDouble(String s)
返回一個新的 double 值,該值被初始化為用指定 String 表示的值,這與 Double 類別的 valueOf 方法一樣。 |
short |
shortValue()
以 short 形式返回此 Double 的值(通過強制轉換為 short )。 |
static String |
toHexString(double d)
返回 double 參數的十六進制字元串表示形式。 |
String |
toString()
返回此 Double 物件的字元串表示形式。 |
static String |
toString(double d)
返回 double 參數的字元串表示形式。 |
static Double |
valueOf(double d)
返回表示指定的 double 值的 Double 實例。 |
static Double |
valueOf(String s)
返回保存用參數字元串 s 表示的 double 值的 Double 物件。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
欄位詳細資訊 |
---|
public static final double POSITIVE_INFINITY
double
型別的正無窮大值的常數。它等於 Double.longBitsToDouble(0x7ff0000000000000L)
返回的值。
public static final double NEGATIVE_INFINITY
double
型別的負無窮大值的常數。它等於 Double.longBitsToDouble(0xfff0000000000000L)
返回的值。
public static final double NaN
double
型別的 NaN 值的常數。它等於 Double.longBitsToDouble(0x7ff8000000000000L)
返回的值。
public static final double MAX_VALUE
double
型別的最大正有限值的常數,最大正有限值為 (2-2-52)·21023。它等於十六進制的浮點文字值 0x1.fffffffffffffP+1023
,也等於 Double.longBitsToDouble(0x7fefffffffffffffL)
。
public static final double MIN_NORMAL
double
型別的最小正標準值的常數,最小正標準值為 2-1022。它等於十六進制的浮點文字值 0x1.0p-1022
,也等於 Double.longBitsToDouble(0x0010000000000000L)
。
public static final double MIN_VALUE
double
型別的最小正非零值的常數,最小正非零值為 2-1074。它等於十六進制的浮點文字值 0x0.0000000000001P-1022
,也等於 Double.longBitsToDouble(0x1L)
。
public static final int MAX_EXPONENT
double
變數可能具有的最大指數。它等於 Math.getExponent(Double.MAX_VALUE)
返回的值。
public static final int MIN_EXPONENT
double
變數可能具有的最小指數。它等於 Math.getExponent(Double.MIN_NORMAL)
返回的值。
public static final int SIZE
public static final Class<Double> TYPE
double
的 Class
實例。
建構子詳細資訊 |
---|
public Double(double value)
Double
物件,它表示基本的 double
參數。
value
- 用 Double
表示的值。public Double(String s) throws NumberFormatException
Double
物件,表示用字元串表示的 double
型別的浮點值。該方法與 valueOf
方法一樣,可將字元串轉換為 double
值。
s
- 要轉換為 Double
的字元串。
NumberFormatException
- 如果字元串不包含可解析的數字。valueOf(java.lang.String)
方法詳細資訊 |
---|
public static String toString(double d)
double
參數的字元串表示形式。下面提到的所有字元都是 ASCII 字元。
NaN
"。
-
' ('\u002D'
);如果符號為正,那麼結果中不顯示符號字元。對於數值 m:
"Infinity"
表示;因此,正無窮大產生結果 "Infinity"
,負無窮大產生結果 "-Infinity"
。
"0.0"
表示;因此,負 0 產生結果 "-0.0"
,正 0 產生結果 "0.0"
。
.
' ('\u002E'
),再後面是表示 m 小數部分的一個或多個十進制數字。
.
' ('\u002E'
),接著是表示 a 小數部分的十進制數字,再後面是字母 'E
' ('\u0045'
),最後是用十進制整數形式表示的 n,這與方法 Integer.toString(int)
產生的結果一樣。
double
型別的鄰近值。這就是說,假設 x 是用十進製表示法表示的精確算術值,是通過對有限非 0 參數 d 調用此方法產生的。那麼 d 一定是最接近 x 的 double
值;如果兩個 double
值都同等地接近 x,那麼 d 必須是其中之一,並且 d 的有效數字的最低有效位必須是 0
。
要創建浮點值的本地化字元串表示形式,請使用 NumberFormat
的子類別。
d
- 要轉換的 double
值。
public static String toHexString(double d)
double
參數的十六進制字元串表示形式。下面提到的所有字元都是 ASCII 字元。
NaN
"。
-
' ('\u002D'
);如果符號為正,那麼結果中不顯示符號字元。對於數值 m:
"Infinity"
表示;因此,正無窮大產生結果 "Infinity"
,負無窮大產生結果 "-Infinity"
。
"0x0.0p0"
表示;因此,負 0 產生結果 "-0x0.0p0"
,正 0 產生結果 "0x0.0p0"
。
double
值,則使用子字元串表示有效數字和指數欄位。有效數字用字元 "0x1."
表示,後跟該有效數字剩餘小數部分的小寫十六進製表示形式。除非所有位數都為 0,否則移除十六進製表示中的尾部 0,在所有位數都為零的情況下,可以用一個 0 表示。接下來用 "p"
表示指數,後跟無偏指數的十進制字元串,該值與通過對指數值調用 Integer.toString
產生的值相同。
double
值,則用字元 "0x0."
表示有效數字,後跟該有效數字剩餘小數部分的十六進製表示形式。移除十六進製表示中的尾部 0。然後用 "p-1022"
表示指數。注意,在非標準有效數字中,必須至少有一個非 0 數字。
浮點值 | 十六進制字元串 |
---|---|
1.0 | 0x1.0p0 |
-1.0 | -0x1.0p0 |
2.0 | 0x1.0p1 |
3.0 | 0x1.8p1 |
0.5 | 0x1.0p-1 |
0.25 | 0x1.0p-2 |
Double.MAX_VALUE |
0x1.fffffffffffffp1023 |
Minimum Normal Value |
0x1.0p-1022 |
Maximum Subnormal Value |
0x0.fffffffffffffp-1022 |
Double.MIN_VALUE |
0x0.0000000000001p-1022 |
d
- 要轉換的 double
值。
public static Double valueOf(String s) throws NumberFormatException
s
表示的 double
值的 Double
物件。
如果 s
為 null
,則拋出 NullPointerException
異常。
忽略 s
中的前導空白字元和尾部空白字元。就像調用 String.trim()
方法那樣移除空白;這就是說,ASCII 空格和控制字元都要移除。s
的其餘部分應該按詞法語法規則所描述的那樣構成一個 FloatValue:
其中 Sign、FloatingPointLiteral、HexNumeral、HexDigits、SignedInteger 和 FloatTypeSuffix 與 Java Language Specification 的詞法結構部分中定義的相同。如果
- FloatValue:
- Signopt
NaN
- Signopt
Infinity
- Signopt FloatingPointLiteral
- Signopt HexFloatingPointLiteral
- SignedInteger
- HexFloatingPointLiteral:
- HexSignificand BinaryExponent FloatTypeSuffixopt
- HexSignificand:
- HexNumeral
- HexNumeral
.
0x
HexDigitsopt.
HexDigits0X
HexDigitsopt.
HexDigits
- BinaryExponent:
- BinaryExponentIndicator SignedInteger
- BinaryExponentIndicator:
p
P
s
不具有 FloatValue 的形式,則拋出 NumberFormatException
。否則,可以認為 s
是一個以常用的“電腦科學記數法”表示的精確十進制值,或者是一個精確的十六進制值;在概念上,這個精確的數值將被轉換為一個“無限精確的”二進制值,然後根據常用的 IEEE 754 浮點演算法的“捨入為最接近的數”規則,將該值捨入為 double
型別,其中包括保留 0 值的符號。最後,返回表示此 double
值的 Double
物件。
要解釋浮點值的本地化字元串表示形式,請使用 NumberFormat
的子類別。
注意,尾部格式說明符、確定浮點文字值型別的說明符(1.0f
是一個 float
值;1.0d
是一個 double
值)不會 影響此方法的結果。換句話說,輸入字元串的數值被直接轉換為目標浮點型別。分兩步的轉換(先將字元串轉換為 float
,然後將 float
轉換為 double
)不 同於直接將字元串轉換為 double
。例如,float
文字值 0.1f
等於 double
值 0.10000000149011612
;float
文字值 0.1f
表示與 double
文字值 0.1
不同的數值。(數值 0.1 無法用二進制浮點數準確表示。)
為了避免因為對無效字元串調用此方法而導致拋出 NumberFormatException
,可以使用以下正則表達式作為輸入到螢幕的字元串:
final String Digits = "(\\p{Digit}+)";
final String HexDigits = "(\\p{XDigit}+)";
// an exponent is 'e' or 'E' followed by an optionally
// .
final String Exp = "[eE][+-]?"+Digits;
final String fpRegex =
("[\\x00-\\x20]*"+ // Optional leading "whitespace"
"[+-]?(" + // Optional sign character
"NaN|" + // "NaN" string
"Infinity|" + // "Infinity" string
// A decimal floating-point string representing a finite positive
// number without a leading sign has at most five basic pieces:
// Digits . Digits ExponentPart FloatTypeSuffix
//
// Since this method allows integer-only strings as input
// in addition to strings of floating-point literals, the
// two sub-patterns below are simplifications of the grammar
// productions from the Java Language Specification, 2nd
// edition, section 3.10.2.
// Digits ._opt Digits_opt ExponentPart_opt FloatTypeSuffix_opt
"((("+Digits+"(\\.)?("+Digits+"?)("+Exp+")?)|"+
// . Digits ExponentPart_opt FloatTypeSuffix_opt
"(\\.("+Digits+")("+Exp+")?)|"+
// Hexadecimal strings
"((" +
// 0[xX] HexDigits ._opt BinaryExponent FloatTypeSuffix_opt
"(0[xX]" + HexDigits + "(\\.)?)|" +
// 0[xX] HexDigits_opt . HexDigits BinaryExponent FloatTypeSuffix_opt
"(0[xX]" + HexDigits + "?(\\.)" + HexDigits + ")" +
")[pP][+-]?" + Digits + "))" +
"[fFdD]?))" +
"[\\x00-\\x20]*");// Optional trailing "whitespace"
if (Pattern.matches(fpRegex, myString))
Double.valueOf(myString); // Will not throw NumberFormatException
else {
// Perform suitable alternative action
}
s
- 要解析的字元串。
String
參數表示的值的 Double
物件。
NumberFormatException
- 如果字元串不包含可解析的數。public static Double valueOf(double d)
Double(double)
,因為此方法可能通過快取記憶體經常請求的值來顯著提高空間和時間性能。
d
- 一個 double 值。
public static double parseDouble(String s) throws NumberFormatException
double
值,該值被初始化為用指定 String
表示的值,這與 Double
類別的 valueOf
方法一樣。
s
- 要解析的字元串。
double
值。
NumberFormatException
- 如果字元串不包含可解析的 double
值。valueOf(String)
public static boolean isNaN(double v)
true
;否則返回 false
。
v
- 要測試的值。
true
;否則返回 false
。public static boolean isInfinite(double v)
true
;否則返回 false
。
v
- 要測試的值。
true
;否則返回 false
。public boolean isNaN()
Double
值是非數字(NaN)值,則返回 true
;否則返回 false
。
true
;否則返回 false
。public boolean isInfinite()
Double
值在數值上為無窮大,則返回 true
;否則返回 false
。
true
;否則返回 false
。public String toString()
Double
物件的字元串表示形式。使用此物件表示的基本 double
值被轉換為一個字元串,這與帶一個參數的 toString
方法完全一樣。
Object
中的 toString
String
表示形式。toString(double)
public byte byteValue()
byte
形式返回此 Double
的值(通過強制轉換為 byte
)。
Number
中的 byteValue
byte
型別的由此物件所表示的 double
值public short shortValue()
short
形式返回此 Double
的值(通過強制轉換為 short
)。
Number
中的 shortValue
short
型別的由此物件所表示的 double
值public int intValue()
int
形式返回此 Double
的值(通過強制轉換為 int
型別)。
Number
中的 intValue
int
型別的由此物件所表示的 double
值public long longValue()
long
形式返回此 Double
的值(通過強制轉換為 long
型別)。
Number
中的 longValue
long
型別的由此物件所表示的 double
值public float floatValue()
Double
物件的 float
值。
Number
中的 floatValue
float
型別的由此物件所表示的 double
值public double doubleValue()
Double
物件的 double
值。
Number
中的 doubleValue
double
值public int hashCode()
Double
物件的雜湊碼。結果是此 Double
物件所表示的基本 double
值的 long
整數位表示形式(與 doubleToLongBits(double)
方法產生的結果完全一樣)兩部分整數之間的異或 (XOR)。也就是說,雜湊碼就是以下表達式的值:
其中(int)(v^(v>>>32))
v
的定義為:
long v = Double.doubleToLongBits(this.doubleValue());
Object
中的 hashCode
hashCode
值。Object.equals(java.lang.Object)
,
Hashtable
public boolean equals(Object obj)
null
而是 Double
物件,且表示的 Double
值與此物件表示的 double
值相同時,結果為 true
。為此,當且僅當將方法 doubleToLongBits(double)
應用於兩個值所返回的 long
值相同時,才認為這兩個 double
值相同。
注意,在大多數情況下,對於 Double
類別的兩個實例 d1
和 d2
,當且僅當
d1.doubleValue() == d2.doubleValue()
為 true
時,d1.equals(d2)
的值才為 true
。但是,有以下兩種例外情況:
d1
和 d2
都表示 Double.NaN
,那麼即使 Double.NaN==Double.NaN
值為 false
,equals
方法也將返回 true
。
d1
表示 +0.0
而 d2
表示 -0.0
,或者相反,那麼即使 +0.0==-0.0
值為 true
,equals
測試也將返回 false
。
Object
中的 equals
obj
- 要與之進行比較的物件。
true
;否則返回 false
。doubleToLongBits(double)
public static long doubleToLongBits(double value)
第 63 位(遮罩碼 0x8000000000000000L
選定的位)表示浮點數的符號。第 62-52 位(遮罩碼 0x7ff0000000000000L
選定的位)表示指數。第 51-0 位(遮罩碼 0x000fffffffffffffL
選定的位)表示浮點數的有效數字(有時也稱為尾數)。
如果參數是正無窮大,則結果為 0x7ff0000000000000L
。
如果參數是負無窮大,則結果為 0xfff0000000000000L
。
如果參數是 NaN,則結果為 0x7ff8000000000000L
。
在所有情況下,結果都是一個 long
整數,將其賦予 longBitsToDouble(long)
方法將產生一個與 doubleToLongBits
的參數相同的浮點值(所有 NaN 值被壓縮成一個“規範”NaN 值時除外)。
value
- 雙
精度 (double) 浮點數。
public static long doubleToRawLongBits(double value)
第 63 位(遮罩碼 0x8000000000000000L
選定的位)表示浮點數的符號。第 62-52 位(遮罩碼 0x7ff0000000000000L
選定的位)表示指數。第 51-0 位(遮罩碼 0x000fffffffffffffL
選定的位)表示浮點數的有效數字(有時也稱為尾數)。
如果參數是正無窮大,則結果為 0x7ff0000000000000L
。
如果參數是負無窮大,則結果為 0xfff0000000000000L
。
如果參數是 NaN,則結果是表示實際 NaN 值的 long
整數。與 doubleToLongBits
方法不同,doubleToRawLongBits
並沒有壓縮那些將 NaN 編碼為一個“規範的”NaN 值的所有位網要。
在所有情況下,結果都是一個 long
整數,將其賦予 longBitsToDouble(long)
方法將產生一個與 doubleToRawLongBits
的參數相同的浮點值。
value
- 雙
精度 (double) 浮點數。
public static double longBitsToDouble(long bits)
double
值。根據 IEEE 754 浮點“雙精度格式”位佈局,參數被視為浮點值表示形式。
如果參數是 0x7ff0000000000000L
,則結果為正無窮大。
如果參數是 0xfff0000000000000L
,則結果為負無窮大。
如果參數值在 0x7ff0000000000001L
到 0x7fffffffffffffffL
之間或者在 0xfff0000000000001L
到 0xffffffffffffffffL
之間,則結果為 NaN。Java 提供的任何 IEEE 754 浮點操作都不能區分具有不同位網要的兩個同型別 NaN 值。不同的 NaN 值只能使用 Double.doubleToRawLongBits
方法區分。
在所有其他情況下,設 s、e 和 m 為可以通過以下參數計算的三個值:
那麼浮點結果等於算術表達式 s·m·2e-1075 的值。int s = ((bits >> 63) == 0) ? 1 : -1; int e = (int)((bits >> 52) & 0x7ffL); long m = (e == 0) ? (bits & 0xfffffffffffffL) << 1 : (bits & 0xfffffffffffffL) | 0x10000000000000L;
注意,此方法不能返回與 long
參數具有完全相同位網要的 double
NaN。IEEE 754 區分了兩種 NaN:quiet NaN 和 signaling NaN。這兩種 NaN 之間的差別在 Java 中通常是不可見的。對 signaling NaN 進行的算術運算將它們轉換為具有不同(但通常類似)位網要的 quiet NaN。但是在某些處理器上,只複製 signaling NaN 也執行這種轉換。特別是在複製 signaling NaN 以將其返回給調用方法時,可能會執行這種轉換。因此,longBitsToDouble
可能無法返回具有 signaling NaN 位網要的 double
值。所以,對於某些 long
值,doubleToRawLongBits(longBitsToDouble(start))
可能不 等於 start
。此外,儘管所有 NaN 位網要(不管是 quiet NaN 還是 signaling NaN)都必須在上面提到的 NaN 範圍內,但表示 signaling NaN 的特定位網要與平臺有關。
bits
- 任意 long
整數。
double
浮點值。public int compareTo(Double anotherDouble)
Double
物件所表示的數值進行比較。在應用到基本 double
值時,有兩種方法可以比較執行此方法產生的值與執行 Java 語言數字比較運算符(<、<=、== 和 >= >
)產生的值之間的區別:
Double.NaN
等於它自身,且大於其他所有 double
值(包括 Double.POSITIVE_INFINITY
)。
0.0d
大於 -0.0d
。
Comparable<Double>
中的 compareTo
anotherDouble
- 要比較的 Double
值。
anotherDouble
在數字上等於此 Double
,則返回 0
;如果此 Double
在數字上小於 anotherDouble
,則返回小於 0
的值;如果此 Double
在數字上大於此 anotherDouble
,則返回大於 0
的值。public static int compare(double d1, double d2)
double
值。返回整數值的符號與以下調用返回的整數的符號相同:
new Double(d1).compareTo(new Double(d2))
d1
- 要比較的第一個 double
d2
- 要比較的第二個 double
d1
在數字上等於 d2
,則返回 0
;如果 d1
在數字上小於 d2
,則返回小於 0
的值;如果 d1
在數字上大於d2
,則返回大於 0
的值。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。