Класс Double
- java.lang.Object
-
- java.lang.Number
-
- java.lang.Double
- Все реализованные интерфейсы:
-
Serializable,Comparable<Double>
public final class Double extends Number implements Comparable<Double>
Класс Double оборачивает значение примитивного типа double в объект. Объект типа Double содержит единственное поле типа double.
Кроме того, этот класс предоставляет несколько методов для преобразования double в String и String в double, а также другие константы и методы, полезные при работе с double.
- С:
- 1.0
- См. также:
- Сериализованная форма
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
static int | BYTES | Количество байтов, используемых для представления значения |
static int | MAX_EXPONENT | Максимальный порядок конечной переменной типа |
static double | MAX_VALUE | Константа, хранящая наибольшее положительное конечное значение типа |
static int | MIN_EXPONENT | Минимальный порядок нормализованной переменной типа |
static double | MIN_NORMAL | Константа, хранящая наименьшее положительное нормальное значение типа |
static double | MIN_VALUE | Константа, хранящая наименьшее положительное ненулевое значение типа |
static double | NaN | Константа, хранящая значение Не Число (NaN) типа |
static double | NEGATIVE_INFINITY | Константа, хранящая отрицательную бесконечность типа |
static double | POSITIVE_INFINITY | Константа, хранящая положительную бесконечность типа |
static int | SIZE | Количество битов, используемых для представления значения |
static Class<Double> | TYPE | Экземпляр |
Конструкторы
| Конструктор | Описание |
|---|---|
Double(double value) | Устарело. Использовать этот конструктор редко уместно. |
Double(String s) | Устарело. Использовать этот конструктор редко уместно. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
byte | byteValue() | Возвращает значение этого |
static int | compare(double d1,
double d2) | Сравнивает два указанных значения |
int | compareTo(Double anotherDouble) | Сравнивает два объекта |
static long | doubleToLongBits(double value) | Возвращает представление указанного значения с плавающей запятой в соответствии с представлением IEEE 754 "формата двойной точности" для битового макета. |
static long | doubleToRawLongBits(double value) | Возвращает представление указанного значения с плавающей запятой в соответствии с представлением IEEE 754 "формата двойной точности" для битового макета, сохраняя значения Не Число (NaN). |
double | doubleValue() | Возвращает значение |
boolean | equals(Object obj) | Сравнивает этот объект с указанным объектом. |
float | floatValue() | Возвращает значение этого |
int | hashCode() | Возвращает хэш-код для этого объекта |
static int | hashCode(double value) | Возвращает хэш-код для значения |
int | intValue() | Возвращает значение этого |
static boolean | isFinite(double d) | Возвращает |
boolean | isInfinite() | Возвращает |
static boolean | isInfinite(double v) | Возвращает |
boolean | isNaN() | Возвращает |
static boolean | isNaN(double v) | Возвращает |
static double | longBitsToDouble(long bits) | Возвращает значение |
long | longValue() | Возвращает значение этого |
static double | max(double a,
double b) | Возвращает большее из двух значений |
static double | min(double a,
double b) | Возвращает меньшее из двух значений |
static double | parseDouble(String s) | Возвращает новый |
short | shortValue() | Возвращает значение этого |
static double | sum(double a,
double b) | Складывает два значения |
static String | toHexString(double d) | Возвращает шестнадцатеричное строковое представление аргумента |
String | toString() | Возвращает строковое представление этого объекта |
static String | toString(double d) | Возвращает строковое представление аргумента |
static Double | valueOf(double d) | Возвращает экземпляр |
static Double | valueOf(String s) | Возвращает объект |
Методы, объявленные в классе java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait Поля
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
Постоянная, содержащая значение «не число» (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).
- См. также:
- Значения константных полей
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
- См. также:
- Значения константных полей
SIZE
public static final int SIZE
Количество бит, используемых для представления значения double.
- С:
- 1.5
- См. также:
- Значения константных полей
BYTES
public static final int BYTES
Количество байтов, используемых для представления значения double.
- С:
- 1.8
- См. также:
- Значения константных полей
TYPE
public static final Class<Double> TYPE
Экземпляр Class, представляющий примитивный тип double.
- С:
- 1.1
Конструкторы
Double
@Deprecated(since="9") public Double(double value)
valueOf(double) обычно является лучшим выбором, так как, вероятно, обеспечит значительно лучшую производительность в отношении памяти и времени.Создает новый объект Double, представляющий примитивное значение double.
- Параметры:
-
value- значение, которое должно представлятьсяDouble.
Double
@Deprecated(since="9")
public Double(String s)
throws NumberFormatException parseDouble(String) для преобразования строки в примитивное значение double или valueOf(String) для преобразования строки в объект Double.Создает новый объект Double, представляющий значение с плавающей точкой типа double, представленное строкой. Строка преобразуется в значение с плавающей точкой как если бы использовался метод valueOf.
- Параметры:
-
s- строка, которая должна быть преобразована в значениеDouble. - Исключения:
-
NumberFormatException- если строка не содержит анализируемого числа.
Методы
toString
public static String toString(double d)
Возвращает строковое представление аргумента double. Все упомянутые ниже символы являются символами ASCII.
- Если аргумент равен NaN, результатом является строка "
NaN". - В противном случае результатом является строка, представляющая знак и модуль (абсолютное значение) аргумента. Если знак отрицательный, первый символ результата — '
-' ('\u002D'); если знак положительный, знак в результате не появляется. Что касается модуля m:- Если m равен бесконечности, он представляется символами
"Infinity"; таким образом, положительная бесконечность даёт результат"Infinity", а отрицательная бесконечность — результат"-Infinity". - Если m равен нулю, он представляется символами
"0.0"; таким образом, отрицательный ноль даёт результат"-0.0", а положительный ноль — результат"0.0". - Если m больше или равен 10-3, но меньше 107, то он представляется целой частью m в десятичном формате без ведущих нулей, за которым следует '
.' ('\u002E'), за которым следуют одна или несколько десятичных цифр, представляющих дробную часть m. - Если m меньше 10-3 или больше или равен 107, то он представляется в так называемой "компьютерной научной записи". Пусть n — единственное целое число такое, что 10n ≤ m < 10n+1; затем пусть a — математически точное частное от деления m на 10n, так что 1 ≤ a < 10. Модуль затем представляется целой частью a как одиночная десятичная цифра, за которой следует '
.' ('\u002E'), за которой следуют десятичные цифры, представляющие дробную часть a, за которой следует буква 'E' ('\u0045'), за которой следует представление n как целого десятичного числа, полученного методомInteger.toString(int).
- Если m равен бесконечности, он представляется символами
double. То есть, предположим, что x — точное математическое значение, представленное десятичным представлением, полученным этим методом для конечного ненулевого аргумента d. Тогда d должно быть значением, ближайшим к x; или если два значения double равноудалены от x, тогда d должно быть одним из них, и самый младший бит значащих цифр d должен быть 0.
Для создания локальных строковых представлений значения с плавающей запятой используйте подклассы NumberFormat.
- Параметры:
-
d- преобразуемоеdouble. - Возвращает:
- строковое представление аргумента.
toHexString
public static String toHexString(double d)
Возвращает шестнадцатеричное строковое представление аргумента double. Все упомянутые ниже символы являются символами ASCII.
- Если аргумент равен 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 |
- Параметры:
-
d- преобразуемоеdouble. - Возвращает:
- шестнадцатеричное строковое представление аргумента.
- С:
- 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 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
// 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- если строка не содержит разборного числа.
valueOf
public static Double valueOf(double d)
Возвращает экземпляр Double, представляющий указанное значение double. Если новый экземпляр Double не требуется, этот метод следует использовать вместо конструктора Double(double), так как этот метод, вероятно, обеспечит значительно лучшую производительность по памяти и времени за счёт кэширования часто запрашиваемых значений.
- Параметры:
-
d- значение типа double. - Возвращает:
- экземпляр
Double, представляющийd. - С:
- 1.5
parseDouble
public static double parseDouble(String s)
throws NumberFormatException Возвращает новый double, инициализированный значением, представленным заданной String, как выполняется методом valueOf класса Double.
- Параметры:
-
s- строка, подлежащая разбору. - Возвращает:
- значение
double, представленное строковым аргументом. - Выбрасывает:
-
NullPointerException- если строка равна null -
NumberFormatException- если строка не содержит разборногоdouble. - С:
- 1.2
- См. также:
valueOf(String)
isNaN
public static boolean isNaN(double v)
Возвращает true, если указанное число является значением «Не число» (NaN), false в противном случае.
- Параметры:
-
v- значение для проверки. - Возвращает:
-
trueесли значение аргумента равно NaN;falseв противном случае.
isInfinite
public static boolean isInfinite(double v)
Возвращает true, если указанное число бесконечно велико по модулю, false в противном случае.
- Параметры:
-
v- значение для проверки. - Возвращает:
-
trueесли значение аргумента равно положительной или отрицательной бесконечности;falseв противном случае.
isFinite
public static boolean isFinite(double d)
Возвращает true, если аргумент является конечным значением с плавающей точкой; возвращает false в противном случае (для аргументов NaN и бесконечности).
- Параметры:
-
d- значениеdoubleдля проверки - Возвращает:
-
trueесли аргумент является конечным значением с плавающей точкой,falseв противном случае. - С:
- 1.8
isNaN
public boolean isNaN()
Возвращает true, если это значение Double равно «Не число» (NaN), false в противном случае.
- Возвращает:
-
trueесли значение, представленное этим объектом, равно NaN;falseв противном случае.
isInfinite
public boolean isInfinite()
Возвращает true, если это значение Double бесконечно велико по модулю, false в противном случае.
- Возвращает:
-
trueесли значение, представленное этим объектом, равно положительной или отрицательной бесконечности;falseв противном случае.
toString
public String toString()
Возвращает строковое представление этого объекта Double. Примитивное значение double, представленное этим объектом, преобразуется в строку точно так же, как и методом toString с одним аргументом.
- Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление этого объекта.
- См. также:
toString(double)
byteValue
public byte byteValue()
Возвращает значение этого Double в виде byte после сужения преобразования примитива.
- Переопределяет:
-
byteValueв классеNumber - Возвращает:
- значение
doubleпредставляемое этим объектом, преобразованное в типbyte - С:
- 1.1
shortValue
public short shortValue()
Возвращает значение этого Double в виде short после сужения преобразования примитива.
- Переопределяет:
-
shortValueв классеNumber - Возвращает:
- значение
doubleпредставляемое этим объектом, преобразованное в типshort - С:
- 1.1
intValue
public int intValue()
Возвращает значение этого Double в виде int после сужения преобразования примитива.
- Указано в:
-
intValueв классеNumber - Возвращает:
- значение
doubleпредставляемое этим объектом, преобразованное в типint
longValue
public long longValue()
Возвращает значение этого Double в виде long после сужения преобразования примитива.
- Указано в:
-
longValueв классеNumber - Возвращает:
- значение
doubleпредставляемое этим объектом, преобразованное в типlong
floatValue
public float floatValue()
Возвращает значение этого Double в виде float после сужения преобразования примитива.
- Указано в:
-
floatValueв классеNumber - Возвращает:
- значение
doubleпредставляемое этим объектом, преобразованное в типfloat - С:
- 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для этого объекта. - См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
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 значение, когда применяется к каждому.
Обратите внимание, что в большинстве случаев, для двух экземпляров класса 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)
doubleToLongBits
public static long doubleToLongBits(double value)
Возвращает представление указанного значения с плавающей запятой в соответствии с битовым представлением формата чисел с плавающей запятой IEEE 754 «double».
Бит 63 (бит, выбранный маской 0x8000000000000000L) представляет знак числа с плавающей запятой. Биты 62-52 (биты, выбранные маской 0x7ff0000000000000L) представляют порядок. Биты 51-0 (биты, выбранные маской 0x000fffffffffffffL) представляют мантиссу (иногда называемую значащей частью) числа с плавающей запятой.
Если аргумент — положительная бесконечность, результат — 0x7ff0000000000000L.
Если аргумент — отрицательная бесконечность, результат — 0xfff0000000000000L.
Если аргумент — NaN, результат — 0x7ff8000000000000L.
Во всех случаях результатом является целое число long, которое, будучи передано методу longBitsToDouble(long), произведёт значение с плавающей запятой, такое же, как аргумент метода doubleToLongBits (за исключением того, что все значения NaN сводятся к одному «каноническому» значению NaN).
- Параметры:
-
value- число с плавающей запятой точностиdouble. - Возвращает:
- биты, представляющие число с плавающей запятой.
doubleToRawLongBits
public static long doubleToRawLongBits(double value)
Возвращает представление указанного значения с плавающей запятой в соответствии с битовым представлением формата чисел с плавающей запятой IEEE 754 «double», сохраняя значения Не Число (NaN).
Бит 63 (бит, выбранный маской 0x8000000000000000L) представляет знак числа с плавающей запятой. Биты 62-52 (биты, выбранные маской 0x7ff0000000000000L) представляют порядок. Биты 51-0 (биты, выбранные маской 0x000fffffffffffffL) представляют мантиссу (иногда называемую значащей частью) числа с плавающей запятой.
Если аргумент — положительная бесконечность, результат — 0x7ff0000000000000L.
Если аргумент — отрицательная бесконечность, результат — 0xfff0000000000000L.
Если аргумент — NaN, результатом является целое число long , представляющее фактическое значение NaN. В отличие от метода doubleToLongBits, метод doubleToRawLongBits не сводит все битовые представления NaN к одному «каноническому» значению NaN.
Во всех случаях результатом является целое число long, которое, будучи передано методу longBitsToDouble(long), произведёт значение с плавающей запятой, такое же, как аргумент метода doubleToRawLongBits.
- Параметры:
-
value- число с плавающей запятой точностиdouble. - Возвращает:
- биты, представляющие число с плавающей запятой.
- С:
- 1.3
longBitsToDouble
public static double longBitsToDouble(long bits)
Возвращает значение с плавающей запятой, соответствующее заданному битовому представлению. Аргумент рассматривается как представление значения с плавающей запятой в соответствии с битовым представлением формата чисел с плавающей запятой IEEE 754 «double».
Если аргумент — 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; Тогда результат с плавающей запятой равен значению математического выражения s·m·2e-1075.
Обратите внимание, что этот метод может не быть способен вернуть 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 численно. Есть два способа, которыми сравнения, выполняемые этим методом, отличаются от сравнений, выполняемых операторами численного сравнения языка Java (<, <=, ==, >=, >) при применении к примитивным значениям double:
-
Double.NaNсчитается этим методом равным самому себе и больше всех остальных значений с плавающей запятой (включаяDouble.POSITIVE_INFINITY). -
0.0dсчитается этим методом большим, чем-0.0d.
Double , заданный этим методом, согласуется с методом equals. - Указано в:
-
compareToв интерфейсеComparable<Double> - Параметры:
-
anotherDouble- объектDoubleдля сравнения. - Возвращает:
- значение
0, еслиanotherDoubleчисленно равен этомуDouble; значение меньше0, если этотDoubleчисленно меньшеanotherDouble; и значение больше0, если этотDoubleчисленно большеanotherDouble. - С:
- 1.2
compare
public static int compare(double d1,
double d2) Сравнивает два указанных значения с плавающей запятой. Знак возвращаемого целого значения такой же, как у целого числа, которое было бы возвращено вызовом:
new Double(d1).compareTo(new Double(d2))
- Параметры:
-
d1- первое значение с плавающей запятой для сравнения -
d2- второе значение с плавающей запятой для сравнения - Возвращает:
- значение
0, еслиd1численно равноd2; значение меньше0, еслиd1численно меньшеd2; и значение больше0, еслиd1численно большеd2. - С:
- 1.4
sum
public static double sum(double a,
double b) Складывает два значения с плавающей запятой в соответствии с оператором +.
- Параметры:
-
a- первый операнд -
b- второй операнд - Возвращает:
- сумму
aиb - С:
- 1.8
- См. также:
BinaryOperator
max
public static double max(double a,
double b) Возвращает большее из двух значений с плавающей запятой, как если бы вызывали Math.max.
- Параметры:
-
a- первый операнд -
b- второй операнд - Возвращает:
- большее из
aиb - С:
- 1.8
- См. также:
BinaryOperator
min
public static double min(double a,
double b) Возвращает меньшее из двух значений с плавающей запятой, как если бы вызывали Math.min.
- Параметры:
-
a- первый операнд -
b- второй операнд - Возвращает:
- меньшее из
aиb. - С:
- 1.8
- См. также:
BinaryOperator
© 1993, 2020, 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/11/docs/api/java.base/java/lang/Double.html