Класс Double
- Все реализованные интерфейсы:
-
Serializable,Comparable<Double>,Constable,ConstantDesc
public final class Double extends Number implements Comparable<Double>, Constable, ConstantDesc
Double оборачивает значение примитивного типа double в объект. Объект типа Double содержит единственное поле типа double. Кроме того, этот класс предоставляет несколько методов для преобразования double в String и String в double, а также другие константы и методы, полезные при работе с double.
Это класс значение; программисты должны рассматривать экземпляры, которые равны, как взаимозаменяемые и не должны использовать экземпляры для синхронизации, иначе может возникнуть непредсказуемое поведение. Например, в будущих версиях синхронизация может не сработать.
Равенство, эквивалентность и сравнение чисел с плавающей точкой
Значения чисел с плавающей точкой IEEE 754 включают конечные значения, отличные от нуля, знакомые нули (+0.0 и -0.0), знакомые бесконечности (положительная бесконечность и отрицательная бесконечность), и NaN (не число). Отношение эквивалентности на множестве значений — это булево отношение на парах значений, которое является рефлексивным, симметричным и транзитивным. Для получения более подробной информации об отношениях эквивалентности и равенстве объектов см. Object.equals спецификацию. Отношение эквивалентности разбивает значения, к которым оно применяется, на множества, называемые классами эквивалентности. Все члены класса эквивалентности равны друг другу по отношению. Класс эквивалентности может содержать только один член. По крайней мере, для некоторых целей, все члены класса эквивалентности взаимозаменяемы. В частности, в численном выражении эквивалентные значения можно заменить друг другом без изменения результата выражения, что означает изменение класса эквивалентности результата выражения.
Обращает внимание, что встроенная операция == над числами с плавающей точкой не является отношением эквивалентности. Несмотря на то, что она не определяет отношение эквивалентности, семантика оператора IEEE 754 == была специально разработана для удовлетворения других потребностей численного вычисления. Есть два исключения, где свойства отношения эквивалентности не соблюдаются
== для чисел с плавающей точкой:
- Если
v1иv2оба представляют NaN, тоv1 == v2имеет значениеfalse. Следовательно, для двух аргументов NaN рефлексивное свойство отношения эквивалентности не соблюдается оператором==. - Если
v1представляет+0.0, аv2представляет-0.0, или наоборот, тоv1 == v2имеет значениеtrue, хотя+0.0и-0.0различимы при различных операциях с плавающей точкой. Например,1.0/+0.0вычисляется до положительной бесконечности, а1.0/-0.0вычисляется до отрицательной бесконечности, и положительная и отрицательная бесконечности не равны друг другу и не эквивалентны друг другу. Таким образом, хотя входной знаковый ноль чаще всего определяет знак результата нуля, из-за деления на ноль,+0.0и-0.0не могут быть взаимозаменяемы в общем случае. Знак входного нуля также оказывает не подменяемый эффект на результат некоторых методов математической библиотеки.
Для упорядоченных сравнений с использованием встроенных операторов сравнения (<, <=, и т. д.), значения NaN имеют другую аномальную ситуацию: NaN не меньше, не больше и не равно никакому значению, включая себя. Это означает, что трихотомия сравнения не соблюдается.
Для обеспечения надлежащей семантики методов equals и compareTo, эти методы не могут быть просто оболочками вокруг == или операторов упорядоченного сравнения. Вместо этого equals использует эквивалентность представления, определяя аргументы NaN как равные друг другу, восстанавливая рефлексивность, и определяя, что +0.0 не равно -0.0. Для сравнений, compareTo определяет полное упорядочение, где -0.0 меньше +0.0, а NaN равно самому себе и считается больше положительной бесконечности.
Операционные семантики equals и
compareTo выражаются через преобразование в двоичный код значений чисел с плавающей точкой в целочисленные значения.
Естественный порядок, реализованный в compareTo, согласован с equals. То есть, два объекта считаются равными по equals тогда и только тогда, когда compareTo над этими объектами возвращает ноль.
Отрегулированные поведения, определенные для equals и
compareTo, позволяют экземплярам классов-оболочек корректно работать со стандартными структурами данных. Например, определение значений NaN как equals друг другу позволяет использовать NaN в качестве элемента HashSet или ключа HashMap. Аналогично, определение
compareTo как полного упорядочения, включая +0.0,
-0.0, и NaN, позволяет использовать экземпляры классов-оболочек в качестве элементов SortedSet или ключей SortedMap.
Сравнение числового равенства с различными полезными отношениями эквивалентности, которые можно определить для чисел с плавающей точкой:
-
числовое равенство (
==оператор): (Не является отношением эквивалентности) - Два значения чисел с плавающей точкой представляют одно и то же расширенное действительное число. Расширенные действительные числа — это действительные числа, дополненные положительной и отрицательной бесконечностью. При числовом равенстве
+0.0и-0.0равны, поскольку оба отображаются на то же действительное значение, 0. NaN не отображается ни на какое действительное число и не равно никакому значению, включая себя. - битовая эквивалентность:
- Биты двух значений чисел с плавающей точкой одинаковы. Это отношение эквивалентности для
doubleзначенийaиbреализуется выражениемDouble.doubleToRawLongBits(a) == Double.doubleToRawLongBits(b)
В соответствии с этим отношением,+0.0и-0.0отличаются друг от друга, и каждый битовый шаблон, кодирующий NaN, отличается от каждого другого битового шаблона, кодирующего NaN. - эквивалентность представления:
- Два значения чисел с плавающей точкой представляют одно и то же данное IEEE 754. В частности, для конечных значений знак, экспонента и мантисса значений чисел с плавающей точкой совпадают. По этому отношению:
-
+0.0и-0.0отличаются друг от друга. - каждый битовый шаблон, кодирующий NaN, считается эквивалентным каждому другому
- положительная бесконечность эквивалентна положительной бесконечности; отрицательная бесконечность эквивалентна отрицательной бесконечности.
-
Double.doubleToLongBits(a) == Double.doubleToLongBits(b) -
Double.valueOf(a).equals(Double.valueOf(b)) -
Double.compare(a, b) == 0
-
a и b, если ни одно из a и b не равно нулю или NaN, то три отношения — числовое равенство, битовая эквивалентность и эквивалентность представления a и b имеют одинаковое значение true/false. Другими словами, для двоичных значений чисел с плавающей точкой три отношения различаются только тогда, когда хотя бы один из аргументов равен нулю или NaN.- См. Спецификацию языка Java:
- 4.2.3 Типы, форматы и значения чисел с плавающей точкой
4.2.4 Операции с числами с плавающей точкой
15.21.1 Операторы числового равенства == и !=
15.20.1 Операторы численного сравнения<,<=,>, и>=
- С:
- 1.0
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
BYTES |
Количество байтов, используемых для представления значения double. |
static final int |
MAX_EXPONENT |
Максимальный показатель степени для конечной переменной double. |
static final double |
MAX_VALUE |
Константа, хранящая наибольшее положительное конечное значение типа double, (2-2-52)·21023. |
static final int |
MIN_EXPONENT |
Минимальный показатель степени для нормализованной переменной double. |
static final double |
MIN_NORMAL |
Константа, хранящая наименьшее положительное нормализованное значение типа double, 2-1022. |
static final double |
MIN_VALUE |
Константа, хранящая наименьшее положительное ненулевое значение типа double, 2-1074. |
static final double |
NaN |
Константа, хранящая значение Не Число (NaN) типа double. |
static final double |
NEGATIVE_INFINITY |
Константа, хранящая отрицательную бесконечность типа double. |
static final double |
POSITIVE_INFINITY |
Константа, хранящая положительную бесконечность типа double. |
static final int |
PRECISION |
Количество битов в мантиссе значения double. |
static final int |
SIZE |
Количество битов, используемых для представления значения double. |
static final Class |
TYPE |
Экземпляр Class, представляющий примитивный тип double. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Double |
Устаревший, для удаления: Элемент API может быть удален в будущей версии. Использовать этот конструктор редко уместно. |
Double |
Устаревший, для удаления: Элемент API может быть удален в будущей версии. Использовать этот конструктор редко уместно. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
byte |
byteValue() |
Возвращает значение этого Double как byte после сужения примитивного преобразования. |
static int |
compare |
Сравнивает два указанных значения double. |
int |
compareTo |
Сравнивает два объекта Double численно. |
Optional |
describeConstable() |
Возвращает Optional, содержащий номинальный дескриптор для этого экземпляра, который является самим экземпляром. |
static long |
doubleToLongBits |
Возвращает представление указанного значения с плавающей запятой в соответствии с битовой структурой "формата двойной точности" с плавающей запятой IEEE 754. |
static long |
doubleToRawLongBits |
Возвращает представление указанного значения с плавающей запятой в соответствии с битовой структурой "формата двойной точности" с плавающей запятой IEEE 754, сохраняя значения Не Число (NaN). |
double |
doubleValue() |
Возвращает значение double этого объекта Double. |
boolean |
equals |
Сравнивает этот объект с указанным объектом. |
float |
floatValue() |
Возвращает значение этого Double как float после сужения примитивного преобразования. |
int |
hashCode() |
Возвращает код хэша для этого объекта Double. |
static int |
hashCode |
Возвращает код хэша для значения double; совместимо с Double.hashCode(). |
int |
intValue() |
Возвращает значение этого Double как int после сужения примитивного преобразования. |
static boolean |
isFinite |
Возвращает true, если аргумент является конечным значением с плавающей запятой; возвращает false в противном случае (для аргументов NaN и бесконечности). |
boolean |
isInfinite() |
Возвращает true, если значение этого Double бесконечно велико по модулю, false в противном случае. |
static boolean |
isInfinite |
Возвращает true, если указанное число бесконечно велико по модулю, false в противном случае. |
boolean |
isNaN() |
Возвращает true, если это значение Double является значением Не Число (NaN), false в противном случае. |
static boolean |
isNaN |
Возвращает true, если указанное число является значением Не Число (NaN), false в противном случае. |
static double |
longBitsToDouble |
Возвращает значение double, соответствующее заданному битовому представлению. |
long |
longValue() |
Возвращает значение этого Double как long после сужения примитивного преобразования. |
static double |
max |
Возвращает большее из двух значений double так, как если бы вызывали Math.max. |
static double |
min |
Возвращает меньшее из двух значений double так, как если бы вызывали Math.min. |
static double |
parseDouble |
Возвращает новый double, инициализированный значением, представленным указанным String, как выполняется метод valueOf класса Double. |
Double |
resolveConstantDesc |
Разрешает этот экземпляр как ConstantDesc, результатом чего является сам экземпляр. |
short |
shortValue() |
Возвращает значение этого Double как short после сужения примитивного преобразования. |
static double |
sum |
Складывает два значения double вместе в соответствии с оператором +. |
static String |
toHexString |
Возвращает шестнадцатеричное строковое представление аргумента double. |
String |
toString() |
Возвращает строковое представление этого объекта Double. |
static String |
toString |
Возвращает строковое представление аргумента double. |
static Double |
valueOf |
Возвращает экземпляр Double, представляющий указанное значение double. |
static Double |
valueOf |
Возвращает объект Double, содержащий значение double, представленное строкой-аргументом s. |
Подробное описание полей
POSITIVE_INFINITY
public static final double POSITIVE_INFINITY
double. Она равна значению, возвращаемому Double.longBitsToDouble(0x7ff0000000000000L).- См. также:
NEGATIVE_INFINITY
public static final double NEGATIVE_INFINITY
double. Она равна значению, возвращаемому Double.longBitsToDouble(0xfff0000000000000L).- См. также:
NaN
public static final double NaN
double. Она эквивалентна значению, возвращаемому Double.longBitsToDouble(0x7ff8000000000000L).- См. также:
MAX_VALUE
public static final double MAX_VALUE
double, (2-2-52)·21023. Она равна шестнадцатеричной плавающей точке 0x1.fffffffffffffP+1023 и также равна Double.longBitsToDouble(0x7fefffffffffffffL).- См. также:
MIN_NORMAL
public static final double MIN_NORMAL
double, 2-1022. Она равна шестнадцатеричной плавающей точке 0x1.0p-1022 и также равна Double.longBitsToDouble(0x0010000000000000L).- С:
- 1.6
- См. также:
MIN_VALUE
public static final double MIN_VALUE
double, 2-1074. Она равна шестнадцатеричной плавающей точке 0x0.0000000000001P-1022 и также равна Double.longBitsToDouble(0x1L).- См. также:
SIZE
public static final int SIZE
double.- С:
- 1.5
- См. также:
PRECISION
public static final int PRECISION
double. Это параметр N в разделе 4.2.3 спецификации языка Java.- С:
- 19
- См. также:
MAX_EXPONENT
public static final int MAX_EXPONENT
double. Он равен значению, возвращаемому Math.getExponent(Double.MAX_VALUE).- С:
- 1.6
- См. также:
MIN_EXPONENT
public static final int MIN_EXPONENT
double. Он равен значению, возвращаемому Math.getExponent(Double.MIN_NORMAL).- С:
- 1.6
- См. также:
BYTES
public static final int BYTES
double.- С:
- 1.8
- См. также:
TYPE
public static final Class<Double> TYPE
Class, представляющий примитивный тип double.- С:
- 1.1
Подробное описание конструкторов
Double
@Deprecated(since="9", forRemoval=true) public Double(double value)
valueOf(double) обычно является лучшим выбором, так как он, вероятно, обеспечит значительно лучшую производительность по памяти и времени.Double, представляющий примитивное значение double.- Параметры:
-
value- значение, которое должно быть представлено объектомDouble.
Double
@Deprecated(since="9", forRemoval=true) public Double(String s) throws NumberFormatException
parseDouble(String) для преобразования строки в примитивное значение double или используйте valueOf(String) для преобразования строки в объект Double.Double, представляющий значение с плавающей точкой типа double, представленное строкой. Строка преобразуется в значение double как если бы это делал метод valueOf.- Параметры:
-
s- строка, которая должна быть преобразована в значениеDouble. - Исключения:
-
NumberFormatException- если строка не содержит анализируемого числа.
Подробное описание методов
toString
public static String toString(double d)
- Если аргумент NaN, результатом является строка "
NaN". - В противном случае результатом является строка, представляющая знак и модуль (абсолютное значение) аргумента. Если знак отрицательный, первый символ результата — '
-' ('\u002D'); если знак положительный, символ знака в результате не появляется. Что касается модуля m:- Если m бесконечность, она представлена символами
"Infinity"; таким образом, положительная бесконечность даёт результат"Infinity", а отрицательная бесконечность — результат"-Infinity". - Если m ноль, она представлена символами
"0.0"; таким образом, отрицательный ноль даёт результат"-0.0", а положительный ноль — результат"0.0". - В противном случае m положительно и конечно. Она преобразуется в строку в два этапа:
- Выбор десятичного числа: Выбирается чётко определённое десятичное число dm для представления m. Это десятичное число (почти всегда) является кратчайшим, которое округляется до m в соответствии с политикой округления до ближайшего значения арифметики с плавающей точкой IEEE 754.
- Форматирование как строки: Десятичное число dm форматируется как строка, либо в простом, либо в компьютерном научном формате, в зависимости от его значения.
- Если m бесконечность, она представлена символами
Десятичное число — это число вида s×10i для некоторых (уникальных) целых чисел s > 0 и i, таких что s не кратно 10. Эти целые числа — мантисса и экспонента десятичного числа соответственно. Длина десятичного числа — (уникальное) положительное целое число n, удовлетворяющее условию 10n-1 ≤ s < 10n.
Десятичное число dm для конечного положительного m определяется следующим образом:
- Пусть R — множество всех десятичных чисел, которые округляются до m в соответствии с обычной политикой округления до ближайшего значения арифметики с плавающей точкой IEEE 754.
- Пусть p — минимальная длина среди всех десятичных чисел в R.
- Когда p ≥ 2, пусть T — множество всех десятичных чисел в R с длиной p. В противном случае пусть T — множество всех десятичных чисел в R с длиной 1 или 2.
- Определите dm как десятичное число в T, которое наиболее близко к m. Или, если таких десятичных чисел в T два, выберите то, у которого чётная мантисса.
Выбранное (уникальное) десятичное число dm затем форматируется. Пусть s, i и n — мантисса, экспонента и длина dm соответственно. Кроме того, пусть e = n + i - 1 и пусть s1…sn — обычное десятичное разложение s. Обратите внимание, что s1 ≠ 0 и sn ≠ 0. Ниже, десятичная точка '.' является '\u002E', а индикатор экспоненты 'E' является '\u0045'.
- Случай -3 ≤ e < 0: dm форматируется как
0.0…0s1…sn, где между десятичной точкой и s1 ровно -(n + i) нулей. Например, 123 × 10-4 форматируется как0.0123. - Случай 0 ≤ e < 7:
- Подслучай i ≥ 0: dm форматируется как s1…sn
0…0.0, где между sn и десятичной точкой ровно i нулей. Например, 123 × 102 форматируется как12300.0. - Подслучай i < 0: dm форматируется как s1…sn+i
.sn+i+1…sn, где справа от десятичной точки ровно -i цифр. Например, 123 × 10-1 форматируется как12.3.
- Подслучай i ≥ 0: dm форматируется как s1…sn
- Случай e < -3 или e ≥ 7: для форматирования dm используется компьютерный научный формат. Здесь e форматируется как с помощью
Integer.toString(int).- Подслучай n = 1: dm форматируется как s1
.0Ee. Например, 1 × 1023 форматируется как1.0E23. - Подслучай n > 1: dm форматируется как s1
.s2…snEe. Например, 123 × 10-21 форматируется как1.23E-19.
- Подслучай n = 1: dm форматируется как s1
Для создания локализованных строковых представлений значения с плавающей точкой используйте подклассы NumberFormat.
- Parameters:
-
d- преобразуемоеdouble. - Returns:
- строковое представление аргумента.
toHexString
public static String toHexString(double d)
- Если аргумент NaN, результатом является строка "
NaN". - В противном случае результатом является строка, представляющая знак и модуль аргумента. Если знак отрицательный, первый символ результата — '
-' ('\u002D'); если знак положительный, символ знака в результате не появляется. Что касается модуля m:- Если m бесконечность, она представлена строкой
"Infinity"; таким образом, положительная бесконечность даёт результат"Infinity", а отрицательная бесконечность — результат"-Infinity". - Если m ноль, она представлена строкой
"0x0.0p0"; таким образом, отрицательный ноль даёт результат"-0x0.0p0", а положительный ноль — результат"0x0.0p0". - Если m — значение с плавающей точкой с нормализованным представлением, для представления полей мантиссы и экспоненты используются подстроки. Ментисса представляется символами
"0x1.", за которыми следует шестнадцатеричное представление остальной части мантиссы как дроби. Завершающие нули в шестнадцатеричном представлении удаляются, за исключением случая, когда все цифры нули, в этом случае используется единичный ноль. Далее экспонента представляется символами"p", за которыми следует десятичная строка необусловленной экспоненты, как если бы она была получена вызовомInteger.toStringк значению экспоненты. - Если m — значение с плавающей точкой с субнормализованным представлением, мантисса представляется символами
"0x0.", за которыми следует шестнадцатеричное представление остальной части мантиссы как дроби. Завершающие нули в шестнадцатеричном представлении удаляются. Далее экспонента представляется символами"p-1022". Обратите внимание, что в субнормализованной мантиссе должна быть хотя бы одна ненулевая цифра.
- Если m бесконечность, она представлена строкой
| Значение с плавающей точкой | Шестнадцатеричная строка |
|---|---|
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 |
- Parameters:
-
d- преобразуемое значение с плавающей точкой. - Returns:
- шестнадцатеричное строковое представление аргумента.
- Since:
- 1.5
valueOf
public static Double valueOf(String s) throws NumberFormatException
Double, содержащий значение double, представленное строкой-аргументом s. Если s является null, то генерируется NullPointerException.
Пробельные символы в начале и конце s игнорируются. Пробелы удаляются так же, как и методом String.trim(); то есть удаляются как пробельные символы ASCII, так и управляющие символы. Остальная часть s должна соответствовать правилам лексического синтаксиса для FloatValue:
где Sign, FloatingPointLiteral, HexNumeral, HexDigits, SignedInteger и FloatTypeSuffix определены в разделах лексической структуры спецификации языка Java, за исключением того, что подчёркивания не допускаются между цифрами. Если
- FloatValue:
- Signopt
NaN- Signopt
Infinity- Signopt FloatingPointLiteral
- Signopt HexFloatingPointLiteral
- SignedInteger
- HexFloatingPointLiteral:
- HexSignificand BinaryExponent FloatTypeSuffixopt
- HexSignificand:
- HexNumeral
- HexNumeral
.0xHexDigitsopt.HexDigits0XHexDigitsopt.HexDigits
- BinaryExponent:
- BinaryExponentIndicator SignedInteger
- BinaryExponentIndicator:
pP
s не соответствует форме FloatValue, то генерируется NumberFormatException. В противном случае s рассматривается как представление точного десятичного значения в обычном "компьютерном научном формате" или точного шестнадцатеричного значения; это точное числовое значение затем концептуально преобразуется в "бесконечно точное" двоичное значение, которое затем округляется до типа double по обычному правилу округления до ближайшего значения IEEE 754 для плавающей точки, которое включает сохранение знака нулевого значения. Обратите внимание, что правило округления до ближайшего значения также подразумевает поведение переполнения и недополнения; если точное значение s достаточно велико по модулю (больше или равно (MAX_VALUE + ulp(MAX_VALUE)/2)), округление до double приведёт к бесконечности, и если точное значение s достаточно мало по модулю (меньше или равно MIN_VALUE/2)), округление до float приведёт к нулю. Наконец, после округления возвращается объект Double, представляющий это значение double. Для интерпретации локализованных строковых представлений значения с плавающей точкой используйте подклассы NumberFormat.
Обратите внимание, что заключительные спецификаторы формата, определяющие тип литерала с плавающей точкой (1.0f — это значение float; 1.0d — это значение double), не влияют на результаты этого метода. Другими словами, числовое значение входной строки преобразуется непосредственно в целевой тип с плавающей точкой. Последовательность преобразований в два этапа, строка в float и затем float в double, не эквивалентна прямому преобразованию строки в double. Например, литерал float равен значению 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
// 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
}
- Parameters:
-
s- строка, подлежащая парсингу. - Returns:
- объект
Double, содержащий значение, представленноеStringаргументом. - Throws:
-
NumberFormatException- если строка не содержит число, подлежащее парсингу.
valueOf
public static Double valueOf(double d)
Double, представляющий указанное значение double. Если новый экземпляр Double не требуется, этот метод обычно следует использовать вместо конструктора Double(double), поскольку этот метод, скорее всего, обеспечит значительно лучшие производительность по памяти и времени за счёт кэширования часто запрашиваемых значений.- Parameters:
-
d- значение типа double. - Returns:
- экземпляр
Double, представляющийd. - Since:
- 1.5
parseDouble
public static double parseDouble(String s) throws NumberFormatException
double, инициализированный значением, представленным указанной String, как выполняется методом valueOf класса Double.- Parameters:
-
s- строка, подлежащая парсингу. - Returns:
- значение
double, представленное строковым аргументом. - Throws:
-
NullPointerException- если строка равна null -
NumberFormatException- если строка не содержит значениеdouble, подлежащее парсингу. - Since:
- 1.2
- See Also:
isNaN
public static boolean isNaN(double v)
true, если указанное число является значением Not-a-Number (NaN), false в противном случае.- API Note:
- Этот метод соответствует операции isNaN, определённой в IEEE 754.
- Parameters:
-
v- значение для проверки. - Returns:
-
trueесли значение аргумента равно NaN;falseв противном случае.
isInfinite
public static boolean isInfinite(double v)
true , если указанное число бесконечно велико по модулю, false в противном случае.- API Note:
- Этот метод соответствует операции isInfinite, определённой в IEEE 754.
- Parameters:
-
v- значение для проверки. - Returns:
-
trueесли значение аргумента равно положительной или отрицательной бесконечности;falseв противном случае.
isFinite
public static boolean isFinite(double d)
true , если аргумент является конечным значением с плавающей точкой; возвращает false в противном случае (для аргументов NaN и бесконечности).- API Note:
- Этот метод соответствует операции isFinite, определённой в IEEE 754.
- Parameters:
-
d- значение с плавающей точкой для проверки - Returns:
-
trueесли аргумент является конечным значением с плавающей точкой,falseв противном случае. - Since:
- 1.8
isNaN
public boolean isNaN()
true , если это значение Double является значением Not-a-Number (NaN), false в противном случае.- Returns:
-
trueесли значение, представленное этим объектом, равно NaN;falseв противном случае.
isInfinite
public boolean isInfinite()
true , если это значение Double бесконечно велико по модулю, false в противном случае.- Returns:
-
trueесли значение, представленное этим объектом, равно положительной или отрицательной бесконечности;falseв противном случае.
toString
public String toString()
Double. Примитивное значение double , представленное этим объектом, преобразуется в строку точно так же, как и методом toString с одним аргументом.- Overrides:
-
toStringв классеObject - Returns:
- строковое представление этого объекта.
- See Also:
byteValue
public byte byteValue()
Double как тип byte после сужения примитивного типа.- Overrides:
-
byteValueв классеNumber - Returns:
- значение
double, представленное этим объектом, преобразованное к типуbyte - See Java Language Specification:
- 5.1.3 Narrowing Primitive Conversion
- Since:
- 1.1
shortValue
public short shortValue()
Double как тип short после сужения примитивного типа.- Overrides:
-
shortValueв классеNumber - Returns:
- значение
double, представленное этим объектом, преобразованное к типуshort - See Java Language Specification:
- 5.1.3 Narrowing Primitive Conversion
- Since:
- 1.1
intValue
public int intValue()
Double в виде int после преобразования сужающего примитива.- Указано в:
-
intValueв классеNumber - Возвращает:
- значение
double, представленное этим объектом, преобразованное в типint - См. Спецификацию языка Java:
- 5.1.3 Преобразование сужающего примитива
longValue
public long longValue()
Double в виде long после преобразования сужающего примитива.- Указано в:
-
longValueв классеNumber - Возвращает:
- значение
double, представленное этим объектом, преобразованное в типlong - См. Спецификацию языка Java:
- 5.1.3 Преобразование сужающего примитива
floatValue
public float floatValue()
Double в виде float после преобразования сужающего примитива.- Указано в:
-
floatValueв классеNumber - Примечание API:
- Этот метод соответствует операции convertFormat, определенной в IEEE 754.
- Возвращает:
- значение
double, представленное этим объектом, преобразованное в типfloat - См. Спецификацию языка Java:
- 5.1.3 Преобразование сужающего примитива
- С:
- 1.0
doubleValue
public double doubleValue()
double этого объекта Double.- Указано в:
-
doubleValueв классеNumber - Возвращает:
- значение
double, представленное этим объектом
hashCode
public int hashCode()
Double. Результатом является исключающее ИЛИ двух половин целочисленного представления в двоичном формате long , точно так же, как и возвращается методом doubleToLongBits(double) для примитивного значения double , представленного этим объектом Double. То есть, хэш-код — это значение выражения: (int)(v^(v>>>32)) где v определено как: long v = Double.doubleToLongBits(this.doubleValue());
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- значение
hash codeдля этого объекта. - См. также:
hashCode
public static int hashCode(double value)
double ; совместимо с Double.hashCode().- Параметры:
-
value- значение для хэширования - Возвращает:
- значение хэш-кода для значения
double. - С:
- 1.8
equals
public boolean equals(Object obj)
true тогда и только тогда, когда аргумент не null и является объектом типа Double , представляющим значение double , имеющее то же значение, что и значение double , представленное этим объектом. Для этой цели два значения double считаются одинаковыми тогда и только тогда, когда метод doubleToLongBits(double) возвращает одинаковое long значение, когда применяется к каждому.- Переопределяет:
-
equalsв классеObject - Примечание API:
- Этот метод определяется с точки зрения
doubleToLongBits(double), а не оператора==над значениямиdouble, так как оператор==не определяет отношение эквивалентности и для выполнения контракта equals должно быть реализовано отношение эквивалентности; см. это обсуждение для получения подробной информации о равенстве и эквивалентности чисел с плавающей точкой. - Параметры:
-
obj- ссылка на объект для сравнения. - Возвращает:
-
trueесли этот объект такой же, как аргумент obj;falseв противном случае. - См. Спецификацию языка Java:
- 15.21.1 Операторы числового равенства == и !=
- См. также:
doubleToLongBits
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- число с плавающей точкой двойной точности. - Возвращает:
- биты, представляющие число с плавающей точкой.
doubleToRawLongBits
public static long doubleToRawLongBits(double value)
Бит 63 (бит, выбираемый маской 0x8000000000000000L) представляет знак числа с плавающей точкой. Биты 62-52 (биты, выбираемые маской 0x7ff0000000000000L) представляют показатель степени. Биты 51-0 (биты, выбираемые маской 0x000fffffffffffffL) представляют мантиссу (иногда называемую мантиссой) числа с плавающей точкой.
Если аргумент — положительная бесконечность, результат равен 0x7ff0000000000000L.
Если аргумент — отрицательная бесконечность, результат равен 0xfff0000000000000L.
Если аргумент — NaN, результат — целое число long , представляющее фактическое значение NaN. В отличие от метода doubleToLongBits , doubleToRawLongBits не сводит все битовые шаблоны, кодирующие NaN, к одному "каноническому" значению NaN.
Во всех случаях результат — целое число long , которое при передаче методу longBitsToDouble(long) произведёт значение с плавающей точкой, такое же, как и аргумент doubleToRawLongBits.
- Параметры:
-
value- число с плавающей точкой двойной точности. - Возвращает:
- биты, представляющие число с плавающей точкой.
- С:
- 1.3
longBitsToDouble
public static double longBitsToDouble(long bits)
double , соответствующее заданному битовому представлению. Аргумент рассматривается как представление значения с плавающей точкой в соответствии с битовым расположением формата с плавающей точкой "double" IEEE 754. Если аргумент равен 0x7ff0000000000000L, результат — положительная бесконечность.
Если аргумент равен 0xfff0000000000000L, результат — отрицательная бесконечность.
Если аргумент имеет любое значение в диапазоне 0x7ff0000000000001L по 0x7fffffffffffffffL или в диапазоне 0xfff0000000000001L по 0xffffffffffffffffL, результат — NaN. Ни одна операция с плавающей точкой IEEE 754, предоставляемая Java, не может отличить два значения NaN одного типа с разными битовыми шаблонами. Разные значения NaN можно различить только с помощью метода Double.doubleToRawLongBits.
Во всех остальных случаях пусть s, e и m — три значения, которые можно вычислить из аргумента:
int s = ((bits >> 63) == 0) ? 1 : -1;
int e = (int)((bits >> 52) & 0x7ffL);
long m = (e == 0) ?
(bits & 0xfffffffffffffL) << 1 :
(bits & 0xfffffffffffffL) | 0x10000000000000L;
Обратите внимание, что этот метод может не вернуть NaN с точно таким же битовым шаблоном, как и аргумент long. IEEE 754 различает два типа NaN: тихие NaN и NaN-сигнализации. Различия между двумя типами NaN обычно не видны в Java. Арифметические операции над NaN-сигнализациями превращают их в тихие NaN с другим, но часто похожим, битовым шаблоном. Однако на некоторых процессорах простое копирование NaN-сигнализации также выполняет это преобразование. В частности, копирование NaN-сигнализации для возврата в вызывающий метод может выполнить это преобразование. Поэтому longBitsToDouble может не вернуть double с битовым шаблоном NaN-сигнализации. Следовательно, для некоторых long значений doubleToRawLongBits(longBitsToDouble(start)) может не равняться start. Кроме того, конкретные битовые шаблоны, представляющие NaN-сигнализации, зависят от платформы; хотя все битовые шаблоны NaN, тихие или сигнализирующие, должны находиться в диапазоне NaN, указанном выше.
- Параметры:
-
bits- любое целое числоlong. - Возвращает:
- значение с плавающей точкой
doubleс тем же битовым шаблоном.
compareTo
public int compareTo(Double anotherDouble)
Double численно. Этот метод налагает полную упорядоченность на объекты Double, с двумя отличиями по сравнению с неполной упорядоченностью, определенной операторами численного сравнения языка Java (<, <=,
==, >=, >) на значениях double. - NaN не упорядочен по отношению к другим значениям и не равен самому себе в операторах сравнения. Этот метод выбирает определение
Double.NaNравным самому себе и больше всех других значенийdouble(включаяDouble.POSITIVE_INFINITY). - Положительный и отрицательный ноль сравниваются численно, но являются различными и различимыми значениями. Этот метод выбирает определение положительного нуля (
+0.0d) как большего, чем отрицательный ноль (-0.0d).
Double , установленное этим методом, совпадает с методом equals; см. это обсуждение для получения подробностей о сравнении и упорядочении с плавающей точкой.- Указано в:
-
compareToв интерфейсеComparable<Double> - Параметры:
-
anotherDouble- сравниваемое значениеDouble. - Возвращает:
- значение
0, еслиanotherDoubleчисленно равно этому значениюDouble; значение меньше0, если это значениеDoubleчисленно меньшеanotherDouble; и значение больше0, если это значениеDoubleчисленно большеanotherDouble. - См. Спецификацию языка Java:
- 15.20.1 Операторы численного сравнения
<,<=,>, и>=
- С:
- 1.2
compare
public static int compare(double d1, double d2)
double. Знак возвращаемого целочисленного значения совпадает со знаком целочисленного значения, которое было бы возвращено вызовом:
Double.valueOf(d1).compareTo(Double.valueOf(d2))
- Параметры:
-
d1- первое сравниваемое значениеdouble -
d2- второе сравниваемое значениеdouble - Возвращает:
- значение
0, еслиd1численно равноd2; значение меньше0, еслиd1численно меньшеd2; и значение больше0, еслиd1численно большеd2. - С:
- 1.4
sum
public static double sum(double a, double b)
double вместе, как и оператор +.- Примечание API:
- Этот метод соответствует операции сложения, определенной в IEEE 754.
- Параметры:
-
a- первый операнд -
b- второй операнд - Возвращает:
- сумму
aиb - См. Спецификацию языка Java:
- 4.2.4 Операции с плавающей точкой
- С:
- 1.8
- См. также:
max
public static double max(double a, double b)
double , как если бы вызывали Math.max.- Примечание API:
- Этот метод соответствует операции нахождения максимума, определенной в IEEE 754.
- Параметры:
-
a- первый операнд -
b- второй операнд - Возвращает:
- большее из
aиb - С:
- 1.8
- См. также:
min
public static double min(double a, double b)
double , как если бы вызывали Math.min.- Примечание API:
- Этот метод соответствует операции нахождения минимума, определенной в IEEE 754.
- Параметры:
-
a- первый операнд -
b- второй операнд - Возвращает:
- меньшее из
aиb. - С:
- 1.8
- См. также:
describeConstable
public Optional<Double> describeConstable()
Optional содержащий номинальный дескриптор для этого экземпляра, который является самим экземпляром.- Указано в:
-
describeConstableв интерфейсеConstable - Возвращает:
-
Optionalописывающий экземпляр Double - С:
- 12
resolveConstantDesc
public Double resolveConstantDesc(MethodHandles.Lookup lookup)
ConstantDesc, результатом чего является сам экземпляр.- Указано в:
-
resolveConstantDescв интерфейсеConstantDesc - Параметры:
-
lookup- игнорируется - Возвращает:
- экземпляр Double
- С:
- 12
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Double.html