新聞中心
Double

java.lang.Object
|---java.lang.Number
|---|---java.lang.Double
public final class Double
extends Number
implements ComparableDouble 類將原始類型 double 的值包裝在一個(gè)對象中。 Double 類型的對象包含一個(gè)類型為 double 的單個(gè)字段。
此外,該類提供了幾種將 double 轉(zhuǎn)換為 String 和 String 轉(zhuǎn)換為 double 的方法,以及在處理 double 時(shí)有用的其他常量和方法。
字段摘要
| 修飾符和類型 | 字段 | 描述 |
|---|---|---|
| static int | BYTES | 用于表示雙精度值的字節(jié)數(shù)。 |
| static int | MAX_EXPONENT | 有限雙精度變量可能具有的最大指數(shù)。 |
| static double | MAX_VALUE | 一個(gè)保持雙精度類型的最大正有限值的常數(shù),(2-2-52)·21023。 |
| static int | MIN_EXPONENT | 標(biāo)準(zhǔn)化雙精度變量可能具有的最小指數(shù)。 |
| static double | MIN_NORMAL | 一個(gè)常數(shù),保持雙精度類型的最小正正常值,2-1022。 |
| static double | MIN_VALUE | 一個(gè)保持雙精度類型的最小正非零值 2-1074 的常數(shù)。 |
| static double | NaN | 一個(gè)保持雙精度類型的非數(shù)字 (NaN) 值的常量。 |
| static double | NEGATIVE_INFINITY | 一個(gè)保持雙精度負(fù)無窮大的常數(shù)。 |
| static double | POSITIVE_INFINITY | 一個(gè)保持 double 類型的正無窮大的常數(shù)。 |
| static int | SIZE | 用于表示雙精度值的位數(shù)。 |
| static Class | TYPE | 表示基本類型 double 的 Class 實(shí)例。 |
構(gòu)造函數(shù)摘要
| 構(gòu)造函數(shù) | 描述 |
|---|---|
| Double(double value) | 構(gòu)造一個(gè)新分配的 Double 對象,該對象表示原始 double 參數(shù)。 |
| Double(String s) | 構(gòu)造一個(gè)新分配的 Double 對象,該對象表示由字符串表示的 double 類型的浮點(diǎn)值。 |
方法總結(jié)
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| byte | byteValue() | 在縮小原始轉(zhuǎn)換后,將此 Double 的值作為字節(jié)返回。 |
| static int | compare(double d1, double d2) | 比較兩個(gè)指定的雙精度值。 |
| int | compareTo(Double anotherDouble) | 以數(shù)字方式比較兩個(gè) Double 對象。 |
| static long | doubleToLongBits(double value) | 根據(jù) IEEE 754 浮點(diǎn)“雙格式”位布局返回指定浮點(diǎn)值的表示。 |
| static long | doubleToRawLongBits(double value) | 根據(jù) IEEE 754 浮點(diǎn)“雙格式”位布局返回指定浮點(diǎn)值的表示,保留非數(shù)字 (NaN) 值。 |
| double | doubleValue() | 返回此 Double 對象的雙精度值。 |
| boolean | equals(Object obj) | 將此對象與指定對象進(jìn)行比較。 |
| float | floatValue() | 在縮小原始轉(zhuǎn)換后,將此 Double 的值作為浮點(diǎn)數(shù)返回。 |
| int | hashCode() | 返回此 Double 對象的哈希碼。 |
| static int | hashCode(double value) | 返回雙精度值的哈希碼; 與 Double.hashCode() 兼容。 |
| int | intValue() | 在縮小原始轉(zhuǎn)換后,將此 Double 的值作為 int 返回。 |
| static boolean | isFinite(double d) | 如果參數(shù)是有限浮點(diǎn)值,則返回 true; 否則返回 false(對于 NaN 和無窮大參數(shù))。 |
| boolean | isInfinite() | 如果此 Double 值的大小無限大,則返回 true,否則返回 false。 |
| static boolean | isInfinite(double v) | 如果指定的數(shù)字在數(shù)量級上無限大,則返回 true,否則返回 false。 |
| boolean | isNaN() | 如果此 Double 值是非數(shù)字 (NaN),則返回 true,否則返回 false。 |
| static boolean | isNaN(double v) | 如果指定的數(shù)字是非數(shù)字 (NaN) 值,則返回 true,否則返回 false。 |
| static double | longBitsToDouble(long bits) | 返回對應(yīng)于給定位表示的雙精度值。 |
| long | longValue() | 在窄化原始轉(zhuǎn)換之后將此 Double 的值作為 long 返回。 |
| static double | max(double a, double b) | 返回兩個(gè)雙精度值中的較大者,就像調(diào)用 Math#max(double, double) 一樣。 |
| static double | min(double a, double b) | 如同調(diào)用 Math#min(double, double) 一樣返回兩個(gè) double 值中較小的一個(gè)。 |
| static double | parseDouble(String s) | 返回一個(gè)新的 double,初始化為由指定 String 表示的值,由 Double 類的 valueOf 方法執(zhí)行。 |
| short | shortValue() | 在縮小原始轉(zhuǎn)換之后,將此 Double 的值作為一個(gè)短值返回。 |
| static double | sum(double a, double b) | 根據(jù) + 運(yùn)算符將兩個(gè)雙精度值相加。 |
| static String | toHexString(double d) | 返回雙參數(shù)的十六進(jìn)制字符串表示。 |
| String | toString() | 返回此 Double 對象的字符串表示形式。 |
| static String | toString(double d) | 返回雙參數(shù)的字符串表示形式。 |
| static Double | valueOf(double d) | 返回表示指定雙精度值的 Double 實(shí)例。 |
| static Double | valueOf(String s) | 返回一個(gè) Double 對象,該對象包含由參數(shù)字符串 s 表示的雙精度值。 |
| 從類 java.lang.Object 繼承的方法 |
|---|
| clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
字段詳情
BYTES
public static final int BYTES
用于表示雙精度值的字節(jié)數(shù)。
MAX_EXPONENT
public static final int MAX_EXPONENT
有限雙精度變量可能具有的最大指數(shù)。 它等于 Math.getExponent(Double.MAX_VALUE) 返回的值。
MAX_VALUE
public static final double MAX_VALUE
一個(gè)保持雙精度類型的最大正有限值的常數(shù),(2-2-52)·21023。 它等于十六進(jìn)制浮點(diǎn)文字 0x1.fffffffffffffP+1023,也等于 Double.longBitsToDouble(0x7fefffffffffffffL)。
MIN_EXPONENT
public static final int MIN_EXPONENT
標(biāo)準(zhǔn)化雙精度變量可能具有的最小指數(shù)。 它等于 Math.getExponent(Double.MIN_NORMAL) 返回的值。
MIN_NORMAL
public static final double MIN_NORMAL
一個(gè)常數(shù),保持雙精度類型的最小正正常值,2-1022。 它等于十六進(jìn)制浮點(diǎn)文字 0x1.0p-1022,也等于 Double.longBitsToDouble(0x0010000000000000L)。
MIN_VALUE
public static final double MIN_VALUE
一個(gè)保持雙精度類型的最小正非零值 2-1074 的常數(shù)。 它等于十六進(jìn)制浮點(diǎn)文字 0x0.0000000000001P-1022,也等于 Double.longBitsToDouble(0x1L)。
NEGATIVE_INFINITY
public static final double NEGATIVE_INFINITY
一個(gè)保持雙精度負(fù)無窮大的常數(shù)。 它等于 Double.longBitsToDouble(0xfff0000000000000L) 返回的值。
NaN
public static final double NaN
一個(gè)保持雙精度類型的非數(shù)字 (NaN) 值的常量。 它相當(dāng)于 Double.longBitsToDouble(0x7ff8000000000000L) 返回的值。
POSITIVE_INFINITY
public static final double POSITIVE_INFINITY
一個(gè)保持 double 類型的正無窮大的常數(shù)。 它等于 Double.longBitsToDouble(0x7ff0000000000000L) 返回的值。
SIZE
public static final int SIZE
用于表示雙精度值的位數(shù)。
TYPE
public static final ClassDouble TYPE
表示基本類型 double 的 Class 實(shí)例。
構(gòu)造函數(shù)詳細(xì)信息
Double
public Double(double value)
構(gòu)造一個(gè)新分配的 Double 對象,該對象表示原始 double 參數(shù)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| value | Double 表示的值。 |
Double
public Double(String s) throws NumberFormatException
構(gòu)造一個(gè)新分配的 Double 對象,該對象表示由字符串表示的 double 類型的浮點(diǎn)值。 字符串被轉(zhuǎn)換為雙精度值,就像通過 valueOf 方法一樣。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| s | 要轉(zhuǎn)換為 Double 的字符串。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NumberFormatException | 如果字符串不包含可解析的數(shù)字。 |
方法詳情
toString
public static String toString(double d)
返回雙參數(shù)的字符串表示形式。 下面提到的所有字符都是 ASCII 字符。
- 如果參數(shù)為 NaN,則結(jié)果為字符串“NaN”。
- 否則,結(jié)果是一個(gè)字符串,表示參數(shù)的符號和大?。ń^對值)。 如果符號為負(fù),則結(jié)果的第一個(gè)字符為'-'('\u002D'); 如果符號為正,則結(jié)果中不會出現(xiàn)符號字符。 至于幅度
m:
- 如果m為無窮大,則用字符“Infinity”表示; 因此,正無窮產(chǎn)生結(jié)果“Infinity”,負(fù)無窮產(chǎn)生結(jié)果“-Infinity”。
- 如果 m 為零,則用字符“0.0”表示; 因此,負(fù)零產(chǎn)生結(jié)果“-0.0”,正零產(chǎn)生結(jié)果“0.0”。
- 如果 m 大于或等于 10-3 但小于 107,則表示為 m 的整數(shù)部分,以十進(jìn)制形式表示,不帶前導(dǎo)零,后跟“.”。 ('\u002E'),后跟一個(gè)或多個(gè)小數(shù)位,表示 m 的小數(shù)部分。
- 如果 m 小于 10-3 或大于或等于 107,則它以所謂的“計(jì)算機(jī)科學(xué)計(jì)數(shù)法”表示。 令 n 為唯一整數(shù),使得 10n ≤ m < 10n+1; 然后讓 a 是 m 和 10n 的數(shù)學(xué)精確商,使得 1 ≤ a < 10。然后將大小表示為 a 的整數(shù)部分,作為單個(gè)十進(jìn)制數(shù)字,后跟“。” ('\u002E'),后跟表示 a 小數(shù)部分的十進(jìn)制數(shù)字,然后是字母 'E' ('\u0045'),然后是 n 表示為十進(jìn)制整數(shù),由 Integer# 方法生成 到字符串(整數(shù))。
m 或 a 的小數(shù)部分必須打印多少位? 必須至少有一個(gè)數(shù)字來表示小數(shù)部分,除此之外,必須有盡可能多的數(shù)字,但僅能將參數(shù)值與相鄰的 double 類型值區(qū)分開來。 也就是說,假設(shè) x 是由該方法為有限非零參數(shù) d 生成的十進(jìn)制表示所表示的精確數(shù)學(xué)值。 那么 d 必須是最接近 x 的 double 值; 或者如果兩個(gè)雙精度值同樣接近 x,則 d 必須是其中之一,并且 d 的有效位的最低有效位必須為 0。
要?jiǎng)?chuàng)建浮點(diǎn)值的本地化字符串表示,請使用 NumberFormat 的子類。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| d | 要轉(zhuǎn)換的雙精度。 |
返回:
參數(shù)的字符串表示。
toHexString
public static String toHexString(double d)
返回雙參數(shù)的十六進(jìn)制字符串表示。 下面提到的所有字符都是 ASCII 字符。
- 如果參數(shù)為 NaN,則結(jié)果為字符串“NaN”。
- 否則,結(jié)果是一個(gè)字符串,表示參數(shù)的符號和大小。 如果符號為負(fù),則結(jié)果的第一個(gè)字符為'-'('\u002D'); 如果符號為正,則結(jié)果中不會出現(xiàn)符號字符。 至于幅度
m:
- 如果m為無窮大,則用字符串“Infinity”表示; 因此,正無窮產(chǎn)生結(jié)果“Infinity”,負(fù)無窮產(chǎn)生結(jié)果“-Infinity”。
- 如果 m 為零,則用字符串“0x0.0p0”表示; 因此,負(fù)零產(chǎn)生結(jié)果“-0x0.0p0”,正零產(chǎn)生結(jié)果“0x0.0p0”。
- 如果 m 是具有標(biāo)準(zhǔn)化表示的雙精度值,則使用子字符串來表示有效數(shù)字和指數(shù)字段。 有效數(shù)字由字符“0x1”表示。 后跟小寫十六進(jìn)制表示的有效數(shù)字的其余部分作為分?jǐn)?shù)。 除非所有數(shù)字都為零,否則十六進(jìn)制表示中的尾隨零被刪除,在這種情況下使用單個(gè)零。 接下來,指數(shù)由“p”表示,后跟無偏指數(shù)的十進(jìn)制字符串,就好像通過對指數(shù)值調(diào)用 Integer#toString(int) 產(chǎn)生的一樣。
- 如果 m 是具有次正規(guī)表示的雙精度值,則有效數(shù)字由字符“0x0”表示。 后跟以分?jǐn)?shù)表示的其余有效數(shù)字的十六進(jìn)制表示。 十六進(jìn)制表示中的尾隨零被刪除。 接下來,指數(shù)由“p-1022”表示。 請注意,次正規(guī)有效數(shù)中必須至少有一個(gè)非零數(shù)字。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| d | 要轉(zhuǎn)換的雙精度。 |
返回:
參數(shù)的十六進(jìn)制字符串表示。
valueOf
public static Double valueOf(String s) throws NumberFormatException
返回一個(gè) Double 對象,該對象包含由參數(shù)字符串 s 表示的雙精度值。
如果 s 為 null,則拋出 NullPointerException。
s 中的前導(dǎo)和尾隨空白字符被忽略。就像使用 String#trim 方法一樣刪除空格;也就是說,ASCII 空格和控制字符都被刪除了。 s 的其余部分應(yīng)構(gòu)成一個(gè) FloatValue,如詞法語法規(guī)則所述:
浮點(diǎn)值:
簽署 NaN
Signopt Infinity
Signopt FloatingPointLiteral
Signopt HexFloatingPointLiteral
有符號整數(shù)
HexFloatingPointLiteral:
HexSignificand BinaryExponent FloatTypeSuffixopt
十六進(jìn)制符號:
十六進(jìn)制數(shù)
十六進(jìn)制數(shù)。
0x 十六進(jìn)制數(shù)字選擇。十六進(jìn)制數(shù)
0X 十六進(jìn)制數(shù)字選擇。十六進(jìn)制數(shù)
二進(jìn)制指數(shù):
BinaryExponentIndicator 有符號整數(shù)
BinaryExponentIndicator:
p
其中 Sign、FloatingPointLiteral、HexNumeral、HexDigits、SignedInteger 和 FloatTypeSuffix 與《Java? 語言規(guī)范》的詞法結(jié)構(gòu)部分中的定義相同,但數(shù)字之間不接受下劃線。如果 s 不具有 FloatValue 的形式,則拋出 NumberFormatException。否則,s 被視為代表通常的“計(jì)算機(jī)科學(xué)記數(shù)法”中的精確十進(jìn)制值或精確的十六進(jìn)制值;然后,這個(gè)精確的數(shù)值在概念上被轉(zhuǎn)換為“無限精確”的二進(jìn)制值,然后通過 IEEE 754 浮點(diǎn)算術(shù)的通常舍入到最近的規(guī)則將其舍入為 double 類型,其中包括保留零值的符號。請注意,四舍五入規(guī)則也意味著溢出和下溢行為;如果 s 的精確值在量級上足夠大(大于或等于 (MAX_VALUE + Math#ulp(double)/2),則四舍五入到 double 將導(dǎo)致無窮大,并且如果 s 的精確值在量級上足夠小(小于或等于 MIN_VALUE/2),四舍五入到浮點(diǎn)數(shù)將導(dǎo)致零。最后,四舍五入后返回一個(gè)表示該雙精度值的 Double 對象。
要解釋浮點(diǎn)值的本地化字符串表示,請使用 NumberFormat 的子類。
請注意,尾隨格式說明符、確定浮點(diǎn)文字類型的說明符(1.0f 是浮點(diǎn)值;1.0d 是雙精度值)不會影響此方法的結(jié)果。也就是說,輸入字符串的數(shù)值直接轉(zhuǎn)換為目標(biāo)浮點(diǎn)類型。兩步轉(zhuǎn)換序列,即字符串到浮點(diǎn)數(shù),然后是浮點(diǎn)數(shù)到雙精度數(shù),并不等同于將字符串直接轉(zhuǎn)換為雙精度數(shù)。例如,浮點(diǎn)文字 0.1f 等于雙精度值 0.10000000149011612; float 文字 0.1f 表示與 double 文字 0.1 不同的數(shù)值。 (數(shù)值 0.1 不能用二進(jìn)制浮點(diǎn)數(shù)精確表示。)
為避免在無效字符串上調(diào)用此方法并引發(fā) NumberFormatException,可以使用下面的正則表達(dá)式來篩選輸入字符串:
final String Digits = "(\\p{Digit}+)";
final String HexDigits = "(\\p{XDigit}+)";
// an exponent is 'e' or 'E' followed by an optionally
// signed decimal integer.
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 section 3.10.2 of
// The Java Language Specification.
// 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
}參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| s | 要解析的字符串。 |
返回:
一個(gè) Double 對象,保存由 String 參數(shù)表示的值。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NumberFormatException | 如果字符串不包含可解析的數(shù)字。 |
valueOf
public static Double valueOf(double d)
返回表示指定雙精度值的 Double 實(shí)例。 如果不需要新的 Double 實(shí)例,則通常應(yīng)優(yōu)先使用此方法而不是構(gòu)造函數(shù) Double(double),因?yàn)榇朔椒赡軙ㄟ^緩存頻繁請求的值來顯著提高空間和時(shí)間性能。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| d | 一個(gè)雙值。 |
返回:
代表 d 的 Double 實(shí)例。
parseDouble
public static double parseDouble(String s) throws NumberFormatException
返回一個(gè)新的 double,初始化為由指定 String 表示的值,由 Double 類的 valueOf 方法執(zhí)行。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| s | 要解析的字符串。 |
返回:
字符串參數(shù)表示的雙精度值。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果字符串為空 |
| NumberFormatException | 如果字符串不包含可解析的雙精度。 |
isNaN
public static boolean isNaN(double v)
如果指定的數(shù)字是非數(shù)字 (NaN) 值,則返回 true,否則返回 false。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| v | 要測試的值。 |
返回:
如果參數(shù)的值為 NaN,則為 true; 否則為假。
isInfinite
public static boolean isInfinite(double v)
如果指定的數(shù)字在數(shù)量級上無限大,則返回 true,否則返回 false。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| v | 要測試的值。 |
返回:
如果參數(shù)的值為正無窮大或負(fù)無窮大,則為真; 否則為假。
isFinite
public static boolean isFinite(double d)
如果參數(shù)是有限浮點(diǎn)值,則返回 true; 否則返回 false(對于 NaN 和無窮大參數(shù))。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| d | 要測試的雙精度值 |
返回:
如果參數(shù)是有限浮點(diǎn)值,則為 true,否則為 false。
isNaN
public boolean isNaN()
如果此 Double 值是非數(shù)字 (NaN),則返回 true,否則返回 false。
返回:
如果此對象表示的值為 NaN,則為 true; 否則為假。
isInfinite
public boolean isInfinite()
如果此 Double 值的大小無限大,則返回 true,否則返回 false。
返回:
如果此對象表示的值是正無窮大或負(fù)無窮大,則為真; 否則為假。
toString
public String toString()
返回此 Double 對象的字符串表示形式。 由該對象表示的原始雙精度值完全轉(zhuǎn)換為字符串,就好像通過一個(gè)參數(shù)的 toString 方法一樣。
覆蓋:
類 Object 中的 toString
返回:
此對象的字符串表示形式。
byteValue
public byte byteValue()
在縮小原始轉(zhuǎn)換后,將此 Double 的值作為字節(jié)返回。
覆蓋:
類 Number 中的 byteValue
返回:
此對象表示的雙精度值轉(zhuǎn)換為字節(jié)類型
shortValue
public short shortValue()
在縮小原始轉(zhuǎn)換之后,將此 Double 的值作為一個(gè)短值返回。
覆蓋:
類 Number 中的 shortValue
返回:
此對象表示的雙精度值轉(zhuǎn)換為類型短
intValue
public int intValue()
在縮小原始轉(zhuǎn)換后,將此 Double 的值作為 int 返回。
指定者:
類 Number 中的 intValue
返回:
此對象表示的 double 值轉(zhuǎn)換為 int 類型
longValue
public long longValue()
在窄化原始轉(zhuǎn)換之后將此 Double 的值作為 long 返回。
指定者:
類 Number 中的 longValue
返回:
此對象表示的 double 值轉(zhuǎn)換為 long 類型
floatValue
public float floatValue()
在縮小原始轉(zhuǎn)換后,將此 Double 的值作為浮點(diǎn)數(shù)返回。
指定者:
類 Number 中的 floatValue
返回:
此對象表示的 double 值轉(zhuǎn)換為 float 類型
doubleValue
public double doubleValue()
返回此 Double 對象的雙精度值。
指定者:
類 Number 中的 doubleValue
返回:
此對象表示的雙精度值
hashCode
public int hashCode()
返回此 Double 對象的哈希碼。 結(jié)果是長整數(shù)位表示的兩半的異或,完全由方法 doubleToLongBits(double) 生成,該 Double 對象表示的原始雙精度值。 也就是說,哈希碼是表達(dá)式的值:
(int)(v^(v>>>32))
其中 v 定義為:
long v = Double.doubleToLongBits(this.doubleValue());
覆蓋:
類 Object 中的 hashCode
返回:
此對象的哈希碼值。
hashCode
public static int hashCode(double value)
返回雙精度值的哈希碼; 與 Double.hashCode() 兼容。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| value | 哈希值 |
返回:
雙精度值的哈希碼值。
equals
public boolean equals(Object obj)
將此對象與指定對象進(jìn)行比較。 當(dāng)且僅當(dāng)參數(shù)不為 null 并且是一個(gè) Double 對象,該對象表示一個(gè)與該對象表示的雙精度具有相同值的雙精度時(shí),結(jié)果才為真。 為此,當(dāng)且僅當(dāng)方法 doubleToLongBits(double) 在應(yīng)用于每個(gè)時(shí)返回相同的 long 值時(shí),才認(rèn)為兩個(gè) double 值相同。
請注意,在大多數(shù)情況下,對于 Double 類的兩個(gè)實(shí)例 d1 和 d2,d1.equals(d2) 的值當(dāng)且僅當(dāng)
d1.doubleValue() == d2.doubleValue()
也有值 true。 但是,有兩個(gè)例外:
- 如果 d1 和 d2 都表示 Double.NaN,則 equals 方法返回 true,即使 Double.NaN==Double.NaN 的值為 false。
- 如果 d1 代表 +0.0 而 d2 代表 -0.0,或反之亦然,則相等測試的值為 false,即使 +0.0==-0.0 的值為 true。
此定義允許哈希表正常運(yùn)行。
覆蓋:
類 Object 中的等于
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| obj | 比較的對象。 |
返回:
如果對象相同,則為 true; 否則為假。
doubleToLongBits
public static long doubleToLongBits(double value)
根據(jù) IEEE 754 浮點(diǎn)“雙格式”位布局返回指定浮點(diǎn)值的表示。
位 63(由掩碼 0x8000000000000000L 選擇的位)表示浮點(diǎn)數(shù)的符號。 位 62-52(由掩碼 0x7ff0000000000000L 選擇的位)表示指數(shù)。 位 51-0(由掩碼 0x000fffffffffffffL 選擇的位)表示浮點(diǎn)數(shù)的有效位(有時(shí)稱為尾數(shù))。
如果參數(shù)為正無窮大,則結(jié)果為 0x7ff0000000000000L。
如果參數(shù)為負(fù)無窮大,則結(jié)果為 0xfff0000000000000L。
如果參數(shù)為 NaN,則結(jié)果為 0x7ff8000000000000L。
在所有情況下,結(jié)果都是一個(gè)長整數(shù),當(dāng)將它提供給 longBitsToDouble(long) 方法時(shí),將產(chǎn)生一個(gè)與 doubleToLongBits 的參數(shù)相同的浮點(diǎn)值(除了所有 NaN 值都折疊為單個(gè)“規(guī)范”NaN 價(jià)值)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| value | 雙精度浮點(diǎn)數(shù)。 |
返回:
表示浮點(diǎn)數(shù)的位。
doubleToRawLongBits
public static long doubleToRawLongBits(double value)
根據(jù) IEEE 754 浮點(diǎn)“雙格式”位布局返回指定浮點(diǎn)值的表示,保留非數(shù)字 (NaN) 值。
位 63(由掩碼 0x8000000000000000L 選擇的位)表示浮點(diǎn)數(shù)的符號。位 62-52(由掩碼 0x7ff0000000000000L 選擇的位)表示指數(shù)。位 51-0(由掩碼 0x000fffffffffffffL 選擇的位)表示浮點(diǎn)數(shù)的有效位(有時(shí)稱為尾數(shù))。
如果參數(shù)為正無窮大,則結(jié)果為 0x7ff0000000000000L。
如果參數(shù)為負(fù)無窮大,則結(jié)果為 0xfff0000000000000L。
如果參數(shù)是 NaN,則結(jié)果是表示實(shí)際 NaN 值的長整數(shù)。與 doubleToLongBits 方法不同,doubleToRawLongBits 不會將所有編碼 NaN 的位模式折疊為單個(gè)“規(guī)范”NaN 值。
在所有情況下,結(jié)果都是一個(gè)長整數(shù),當(dāng)給 longBitsToDouble(long) 方法時(shí),將產(chǎn)生一個(gè)與 doubleToRawLongBits 的參數(shù)相同的浮點(diǎn)值。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| value | 雙精度浮點(diǎn)數(shù)。 |
返回:
表示浮點(diǎn)數(shù)的位。
longBitsToDouble
public static double longBitsToDouble(long bits)
返回對應(yīng)于給定位表示的雙精度值。 根據(jù) IEEE 754 浮點(diǎn)“雙格式”位布局,該參數(shù)被認(rèn)為是浮點(diǎn)值的表示。
如果參數(shù)為 0x7ff0000000000000L,則結(jié)果為正無窮大。
如果參數(shù)為 0xfff0000000000000L,則結(jié)果為負(fù)無窮大。
如果參數(shù)是 0x7ff0000000000001L 至 0x7fffffffffffffffL 范圍內(nèi)或 0xfff0000000000001L 至 0xffffffffffffffffL 范圍內(nèi)的任何值,則結(jié)果為 NaN。 Java 提供的任何 IEEE 754 浮點(diǎn)運(yùn)算都無法區(qū)分具有不同位模式的相同類型的兩個(gè) NaN 值。 NaN 的不同值只能通過使用 Double.doubleToRawLongBits 方法來區(qū)分。
在所有其他情況下,讓 s、e 和 m 是可以從參數(shù)計(jì)算的三個(gè)值:
int s = ((bits >> 63) == 0) ? 1 : -1;
int e = (int)((bits >> 52) & 0x7ffL);
long m = (e == 0) ?
(bits & 0xfffffffffffffL) << 1 :
(bits & 0xfffffffffffffL) | 0x10000000000000L;那么浮點(diǎn)結(jié)果等于數(shù)學(xué)表達(dá)式s·m·2e-1075的值。
請注意,此方法可能無法返回與 long 參數(shù)具有完全相同的位模式的雙 NaN。 IEEE 754 區(qū)分了兩種 NaN,靜默 NaN 和信令 NaN。這兩種 NaN 之間的差異在 Java 中通常是不可見的。信號 NaN 的算術(shù)運(yùn)算將它們變成安靜的 NaN,具有不同但通常相似的位模式。但是,在某些處理器上,僅復(fù)制信號 NaN 也會執(zhí)行該轉(zhuǎn)換。特別是,復(fù)制一個(gè)信令 NaN 以將其返回給調(diào)用方法可以執(zhí)行此轉(zhuǎn)換。因此 longBitsToDouble 可能無法返回帶有信號 NaN 位模式的雙精度數(shù)。因此,對于某些 long 值,doubleToRawLongBits(longBitsToDouble(start)) 可能不等于 start。此外,哪些特定的位模式代表信令 NaN 取決于平臺;盡管所有 NaN 位模式,安靜或信令,都必須在上面確定的 NaN 范圍內(nèi)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| bits | 任何長整數(shù)。 |
返回:
具有相同位模式的雙精度浮點(diǎn)值。
compareTo
public int compareTo(Double anotherDouble)
以數(shù)字方式比較兩個(gè) Double 對象。 當(dāng)應(yīng)用于原始雙精度值時(shí),此方法執(zhí)行的比較與 Java 語言數(shù)值比較運(yùn)算符(<、<=、==、>=、>)執(zhí)行的比較有兩種不同之處:
- 此方法認(rèn)為 Double.NaN 等于其自身并且大于所有其他雙精度值(包括 Double.POSITIVE_INFINITY)。
- 此方法認(rèn)為 0.0d 大于 -0.0d。
這確保了此方法強(qiáng)加的 Double 對象的自然排序與 equals 一致。
指定者:
接口 ComparableDouble 中的 compareTo
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| anotherDouble | 要比較的 Double。 |
返回:
如果 anotherDouble 在數(shù)值上等于此 Double,則值為 0; 如果此 Double 在數(shù)值上小于 anotherDouble,則值小于 0; 如果此 Double 在數(shù)值上大于 anotherDouble,則值大于 0。
compare
public static int compare(double d1, double d2)
比較兩個(gè)指定的雙精度值。 返回的整數(shù)值的符號與調(diào)用將返回的整數(shù)的符號相同:
new Double(d1).compareTo(new Double(d2)) 參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| d1 | 第一個(gè)要比較的雙精度 |
| d2 | 第二個(gè)要比較的雙精度 |
返回:
如果 d1 在數(shù)值上等于 d2,則值為 0; 如果 d1 在數(shù)值上小于 d2,則值小于 0; 如果 d1 在數(shù)值上大于 d2,則值大于 0。
sum
public static double sum(double a, double b)
根據(jù) + 運(yùn)算符將兩個(gè)雙精度值相加。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| a | 第一個(gè)操作數(shù) |
| b | 第二個(gè)操作數(shù) |
返回:
a 和 b 的和
max
public static double max(double a, double b)
返回兩個(gè)雙精度值中的較大者,就像調(diào)用 Math#max(double, double) 一樣。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| a | 第一個(gè)操作數(shù) |
| b | 第二個(gè)操作數(shù) |
返回:
a 和 b 中的較大的一個(gè)。
min
public static double min(double a, double b)
如同調(diào)用 Math#min(double, double) 一樣返回兩個(gè) double 值中較小的一個(gè)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| a | 第一個(gè)操作數(shù) |
| b | 第二個(gè)操作數(shù) |
返回:
a 和 b 中較小的一個(gè)。
網(wǎng)站名稱:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSDouble
新聞來源:http://www.dlmjj.cn/article/dpidspp.html


咨詢
建站咨詢
