Spec-Zone .ru
спецификации, руководства, описания, API
|
public final class Double extends Number implements Comparable<Double>
Double
класс обертывает значение типа примитива double
в объекте. Объект типа Double
содержит единственное поле, тип которого double
. Кроме того, этот класс обеспечивает несколько методов для того, чтобы они преобразовали a double
к a String
и a String
к a double
, так же как другие константы и методы, полезные, имея дело с a 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 |
НЭН
Постоянное содержание Не-число (НЭН) значение типа
double . |
static double |
NEGATIVE_INFINITY
Постоянное содержание отрицательная бесконечность типа
double . |
static double |
POSITIVE_INFINITY
Постоянное содержание положительная бесконечность типа
double . |
static int |
РАЗМЕР
Число битов, используемых, чтобы представить a
double значение. |
static Class<Double> |
ВВЕСТИ
Class экземпляр, представляющий тип примитива double . |
Конструктор и Описание |
---|
Double(double value)
Создает недавно выделенный
Double объект, который представляет примитив double параметр. |
Double(String s)
Создает недавно выделенный
Double объект, который представляет значение с плавающей точкой типа double представленный строкой. |
Модификатор и Тип | Метод и Описание |
---|---|
byte |
byteValue()
Возвращает значение этого
Double как a byte (бросая к a byte ). |
static int |
compare(double d1, double d2)
Сравнивает эти определенные два
double значения. |
int |
compareTo(Double anotherDouble)
Сравнивается два
Double объекты в цифровой форме. |
static long |
doubleToLongBits(double value)
Возвращает представление указанного значения с плавающей точкой согласно IEEE 754 "двойной формат с плавающей точкой" разрядное расположение.
|
static long |
doubleToRawLongBits(double value)
Возвращает представление указанного значения с плавающей точкой согласно IEEE 754 "двойной формат с плавающей точкой" разрядное расположение, сохраняя Не-число (НЭН) значения.
|
double |
doubleValue()
Возвраты
double значение этого Double объект. |
boolean |
equals(Object obj)
Сравнивает этот объект с указанным объектом.
|
float |
floatValue()
Возвраты
float значение этого Double объект. |
int |
hashCode()
Возвращает хэш-код для этого
Double объект. |
int |
intValue()
Возвращает значение этого
Double как int (бросая, чтобы ввести int ). |
boolean |
isInfinite()
Возвраты
true если это Double значение является бесконечно большим в величине, false иначе. |
static boolean |
isInfinite(double v)
Возвраты
true если конкретное количество является бесконечно большим в величине, false иначе. |
boolean |
isNaN()
Возвраты
true если это Double значение является Не-числом (НЭН), false иначе. |
static boolean |
isNaN(double v)
Возвраты
true если конкретное количество является Не-числом (НЭН) значение, false иначе. |
static double |
longBitsToDouble(long bits)
Возвраты
double значение, соответствующее данному разрядному представлению. |
long |
longValue()
Возвращает значение этого
Double как a long (бросая, чтобы ввести long ). |
static double |
parseDouble(String s)
Возвращает новое
double инициализированный к значению представляется указанным String , как выполняющийся valueOf метод класса Double . |
short |
shortValue()
Возвращает значение этого
Double как a short (бросая к a short ). |
static String |
toHexString(double d)
Возвращает шестнадцатеричное строковое представление
double параметр. |
Строка |
toString()
Возвращает строковое представление этого
Double объект. |
static String |
toString(double d)
Возвращает строковое представление
double параметр. |
static Double |
valueOf(double d)
Возвраты a
Double экземпляр, представляющий указанное double значение. |
static Double |
valueOf(String s)
Возвраты a
Double объект, содержащий double значение представляется строкой параметра s . |
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
. Это эквивалентно значению, возвращенному 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
double
значение.public Double(double value)
Double
объект, который представляет примитив double
параметр.value
- значение, которое будет представлено Double
.public Double(String s) throws NumberFormatException
Double
объект, который представляет значение с плавающей точкой типа double
представленный строкой. Строка преобразовывается в a double
оцените как будто valueOf
метод.s
- строка, которая будет преобразована в a Double
.NumberFormatException
- если строка не содержит parsable число.valueOf(java.lang.String)
public static String toString(double d)
double
параметр. Все символы, упомянутые ниже, являются символами ASCII. NaN
". -
' ('\u002D'
); если знак положителен, никакой символ знака не появляется в результате. Что касается величины м.: "Infinity"
; таким образом положительная бесконечность приводит к результату "Infinity"
и отрицательная бесконечность приводит к результату "-Infinity"
. "0.0"
; таким образом отрицательный нуль приводит к результату "-0.0"
и положительный нуль приводит к результату "0.0"
. .
' ('\u002E'
), сопровождаемый одной или более десятичными цифрами, представляющими дробную часть м. .
' ('\u002E'
), сопровождаемый десятичными цифрами, представляющими дробную часть a, сопровождаемого буквой'E
' ('\u0045'
), сопровождаемый представлением n как десятичное целое число, как произведено методом Integer.toString(int)
. double
. Таким образом, предположите, что x является точным математическим значением, представленным десятичным представлением, произведенным этим методом для конечного ненулевого параметра d. Затем d должен быть double
оцените самый близкий x; или если два double
значения одинаково близко к x, тогда d должен быть одним из них, и младший значащий бит мантиссы d должен быть 0
. Чтобы создать локализованные строковые представления значения с плавающей точкой, используйте подклассы NumberFormat
.
d
- double
быть преобразованным.public static String toHexString(double d)
double
параметр. Все символы, упомянутые ниже, являются символами ASCII. NaN
". -
' ('\u002D'
); если знак положителен, никакой символ знака не появляется в результате. Что касается величины м.: "Infinity"
; таким образом положительная бесконечность приводит к результату "Infinity"
и отрицательная бесконечность приводит к результату "-Infinity"
. "0x0.0p0"
; таким образом отрицательный нуль приводит к результату "-0x0.0p0"
и положительный нуль приводит к результату "0x0.0p0"
. double
значение с нормализованным представлением, подстроки используются, чтобы представить поля экспоненты и мантисса. Мантисса представляется символами "0x1."
сопровождаемый строчным шестнадцатеричным представлением остальной части мантиссы как часть. Конечные нули в шестнадцатеричном представлении удаляются, если все цифры не являются нулем, когда используется единственный нуль. Затем, экспонента представляется "p"
сопровождаемый десятичной строкой несмещенной экспоненты, как будто произведенный звонком Integer.toString
на значении экспоненты. double
значение с субнормальным представлением, мантисса представляется символами "0x0."
сопровождаемый шестнадцатеричным представлением остальной части мантиссы как часть. Конечные нули в шестнадцатеричном представлении удаляются. Затем, экспонента представляется "p-1022"
. Отметьте, что должна быть по крайней мере одна ненулевая цифра в субнормальной мантиссе. Значение с плавающей точкой | Шестнадцатеричная Строка |
---|---|
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
Double
объект, содержащий double
значение представляется строкой параметра s
. Если s
null
, тогда a NullPointerException
бросается.
Продвижение и запаздывание пробельных символов в s
игнорируются. Пробел удаляется как будто String.trim()
метод; то есть, и пробелы ASCII и управляющие символы удаляются. Остальная часть s
должен составить FloatValue как описано лексическими правилами синтаксиса:
где Знак, FloatingPointLiteral, HexNumeral, HexDigits, SignedInteger и FloatTypeSuffix как определяются в лексических разделах структуры Спецификации языка Java™, за исключением того, что подчеркивания не принимаются между цифрами. Если
- 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, тогда a NumberFormatException
бросается. Иначе, s
расценивается как представление точного десятичного значения в обычном "компьютеризированном экспоненциальном представлении" или как точное шестнадцатеричное значение; это точное численное значение тогда концептуально преобразовывается в "бесконечно точное" двоичное значение, которое тогда округляется, чтобы ввести double
по обычному правилу раунда-к-самому-близкому IEEE 754 арифметика с плавающей точкой, которая включает сохранение знака нулевого значения. Отметьте, что правило раунда-к-самому-близкому также подразумевает поведение потери значимости и переполнение; если точное значение s
является достаточно большим в величине (больше чем или равный (MAX_VALUE
+ ulp(MAX_VALUE)
/2), округление к double
приведет к бесконечности и если точное значение s
является достаточно маленьким в величине (меньше чем или равный MIN_VALUE
/2), округление, чтобы плавать приведет к нулю. Наконец, после округления a Double
объект, представляющий это double
значение возвращается. Чтобы интерпретировать локализованные строковые представления значения с плавающей точкой, используйте подклассы NumberFormat
.
Отметьте, что запаздывающие спецификаторы формата, спецификаторы, которые определяют тип литерала с плавающей точкой (1.0f
a float
значение; 1.0d
a double
значение), не влияйте на результаты этого метода. Другими словами численное значение строки ввода преобразовывается непосредственно в целевой тип с плавающей точкой. Двухступенчатая последовательность преобразований, представьте в виде строки к float
сопровождаемый float
к double
, не эквивалентно преобразованию строки непосредственно к double
. Например, float
литерал 0.1f
равно double
значение 0.10000000149011612
; float
литерал 0.1f
представляет различное численное значение чем double
литерал 0.1
. (Численное значение 0.1 не может быть точно представлено в двоичном числе с плавающей точкой.)
Избегать вызывать этот метод на недопустимой строке и иметь a NumberFormatException
будьте брошены, регулярное выражение ниже может использоваться, чтобы экранировать строку ввода:
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
}
s
- строка, которая будет проанализирована.Double
объект, содержащий значение, представленное String
параметр.NumberFormatException
- если строка не содержит parsable число.public static Double valueOf(double d)
Double
экземпляр, представляющий указанное double
значение. Если новое Double
экземпляр не требуется, этот метод должен обычно использоваться в предпочтении к конструктору Double(double)
, поскольку этот метод, вероятно, приведет к значительно лучшей производительности пространства и времени, кэшируя часто требуемые значения.d
- двойное значение.Double
представление экземпляра d
.public static double parseDouble(String s) throws NumberFormatException
double
инициализированный к значению представляется указанным String
, как выполняющийся valueOf
метод класса Double
.s
- строка, которая будет проанализирована.double
значение представляется строковым параметром.NullPointerException
- если строка является нулемNumberFormatException
- если строка не содержит parsable 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()
true
если это Double
значение является Не-числом (НЭН), false
иначе.true
если значением, представленным этим объектом, является НЭН; false
иначе.public boolean isInfinite()
true
если это Double
значение является бесконечно большим в величине, false
иначе.true
если значение, представленное этим объектом, является положительной бесконечностью или отрицательной бесконечностью; false
иначе.public String toString()
Double
объект. Примитив double
значение, представленное этим объектом, преобразовывается в строку точно как будто методом toString
из одного параметра.toString
в классе Object
String
представление этого объекта.toString(double)
public byte byteValue()
Double
как a byte
(бросая к a byte
).public short shortValue()
Double
как a short
(бросая к a short
).shortValue
в классе Number
double
значение, представленное этим объектом, преобразованным в тип short
public int intValue()
Double
как int
(бросая, чтобы ввести int
).public long longValue()
Double
как a long
(бросая, чтобы ввести long
).public float floatValue()
float
значение этого Double
объект.floatValue
в классе Number
double
значение, представленное этим объектом, преобразованным в тип float
public double doubleValue()
double
значение этого Double
объект.doubleValue
в классе Number
double
значение представляется этим объектомpublic int hashCode()
Double
объект. Результатом является монопольное ИЛИ двух половин long
целочисленное разрядное представление, точно как произведено методом doubleToLongBits(double)
, из примитива double
значение представляется этим Double
объект. Таким образом, хэш-код является значением выражения:
(int)(v^(v>>>32))
где v
определяется:
long v = Double.doubleToLongBits(this.doubleValue());
hashCode
в классе Object
hash code
значение для этого объекта.Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
true
если и только если параметр не null
и a Double
объект, который представляет a double
у этого есть то же самое значение как double
представленный этим объектом. С этой целью, два double
значения, как полагают, являются тем же самым если и только если метод doubleToLongBits(double)
возвращает идентичное long
оцените когда применено к каждого. Отметьте что в большинстве случаев для двух экземпляров класса Double
, d1
и d2
, значение d1.equals(d2)
true
если и только если
d1.doubleValue() == d2.doubleValue()
также имеет значение true
. Однако, есть два исключения:
d1
и d2
оба представляют Double.NaN
, тогда equals
возвраты метода true
, даже при том, что Double.NaN==Double.NaN
имеет значение false
. d1
представляет +0.0
в то время как d2
представляет -0.0
, или наоборот, equal
у теста есть значение false
, даже при том, что +0.0==-0.0
имеет значение true
. equals
в классе Object
obj
- объект сравниться с.true
если объекты являются тем же самым; false
иначе.doubleToLongBits(double)
public static long doubleToLongBits(double value)
Бит 63 (бит, который выбирается маской 0x8000000000000000L
) представляет знак числа с плавающей точкой. Биты 62-52 (биты, которые выбираются маской 0x7ff0000000000000L
) представьте экспоненту. Биты 51-0 (биты, которые выбираются маской 0x000fffffffffffffL
) представьте мантиссу (иногда названный мантиссой) числа с плавающей точкой.
Если параметром является положительная бесконечность, результат 0x7ff0000000000000L
.
Если параметром является отрицательная бесконечность, результат 0xfff0000000000000L
.
Если параметром является НЭН, результат 0x7ff8000000000000L
.
Во всех случаях результатом является a long
целое число, что, когда дано longBitsToDouble(long)
метод, произведет значение с плавающей точкой то же самое как параметр doubleToLongBits
(кроме всей НЭН значения сворачиваются к единственному "каноническому" значению НЭН).
value
- a double
точность число с плавающей точкой.public static long doubleToRawLongBits(double value)
Бит 63 (бит, который выбирается маской 0x8000000000000000L
) представляет знак числа с плавающей точкой. Биты 62-52 (биты, которые выбираются маской 0x7ff0000000000000L
) представьте экспоненту. Биты 51-0 (биты, которые выбираются маской 0x000fffffffffffffL
) представьте мантиссу (иногда названный мантиссой) числа с плавающей точкой.
Если параметром является положительная бесконечность, результат 0x7ff0000000000000L
.
Если параметром является отрицательная бесконечность, результат 0xfff0000000000000L
.
Если параметром является НЭН, результат long
целое число, представляющее фактическое значение НЭН. В отличие от этого doubleToLongBits
метод, doubleToRawLongBits
не сворачивает все комбинации двоичных разрядов, кодирующие НЭН к единственному "каноническому" значению НЭН.
Во всех случаях результатом является a long
целое число, что, когда дано longBitsToDouble(long)
метод, произведет значение с плавающей точкой то же самое как параметр doubleToRawLongBits
.
value
- a double
точность число с плавающей точкой.public static double longBitsToDouble(long bits)
double
значение, соответствующее данному разрядному представлению. Параметром, как полагают, является представление значения с плавающей точкой согласно IEEE 754 "двойной формат с плавающей точкой" разрядное расположение. Если параметр 0x7ff0000000000000L
, результатом является положительная бесконечность.
Если параметр 0xfff0000000000000L
, результатом является отрицательная бесконечность.
Если параметром является какое-либо значение в диапазоне 0x7ff0000000000001L
через 0x7fffffffffffffffL
или в диапазоне 0xfff0000000000001L
через 0xffffffffffffffffL
, результатом является НЭН. Никакой IEEE 754 работа с плавающей точкой, обеспеченная Java, не может различить два значения НЭН того же самого типа с различными комбинациями двоичных разрядов. Отличные значения НЭН только различимы при помощи Double.doubleToRawLongBits
метод.
Во всех других случаях позвольте s, e, и м. быть тремя значениями, которые могут быть вычислены из параметра:
Затем результат с плавающей точкой равняется значению математического выражения s · м. · 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;
Отметьте, что этот метод, возможно, не в состоянии возвратить a double
НЭН с точно той же самой комбинацией двоичных разрядов как long
параметр. IEEE 754 различает два вида NaNs, тихого NaNs и сигнализации NaNs. Различия между двумя видами НЭН обычно не видимы в Java. Арифметические операции при сигнализации NaNs превращают их в тихий NaNs с различным, но часто подобная, комбинация двоичных разрядов. Однако, на некоторых процессорах, просто копируя сигнальную НЭН также выполняет то преобразование. В частности копирование сигнальной НЭН, чтобы возвратить это методу вызова может выполнить это преобразование. Так longBitsToDouble
возможно, не в состоянии возвратить a double
с сигнальной комбинацией двоичных разрядов НЭН. Следовательно, для некоторых long
значения, doubleToRawLongBits(longBitsToDouble(start))
возможно, не равняется start
. Кроме того то, какие определенные комбинации двоичных разрядов представляют сигнальный NaNs, является зависимой платформой; хотя все комбинации двоичных разрядов НЭН, тихие или сигнализация, должны быть в диапазоне НЭН, идентифицированном выше.
bits
- любой long
целое число.double
значение с плавающей точкой с той же самой комбинацией двоичных разрядов.public int compareTo(Double anotherDouble)
Double
объекты в цифровой форме. Есть два пути, которыми сравнения, выполняемые этим методом, отличаются от выполняемых языком Java числовые операторы сравнения (<, <=, ==, >=, >
) когда применено к примитивный double
значения: Double.NaN
как полагает этот метод, равен себе и больше чем все другой double
значения (включая Double.POSITIVE_INFINITY
). 0.0d
как полагает этот метод, больше чем -0.0d
. Double
объекты, наложенные этим методом, являются непротиворечивыми с, равняется.compareTo
в интерфейсе Comparable<Double>
anotherDouble
- Double
быть сравненным.0
если anotherDouble
в цифровой форме равно этому Double
; значение меньше чем 0
если это Double
в цифровой форме меньше чем anotherDouble
; и значение, больше чем 0
если это Double
в цифровой форме больше чем anotherDouble
.public static int compare(double d1, double d2)
double
значения. Знак возвращенного целочисленного значения является тем же самым как тем из целого числа, которое было бы возвращено вызовом: new Double(d1).compareTo(new Double(d2))
d1
- первое double
сравнитьсяd2
- второе double
сравниться0
если d1
в цифровой форме равно d2
; значение меньше чем 0
если d1
в цифровой форме меньше чем d2
; и значение, больше чем 0
если d1
в цифровой форме больше чем d2
.
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.