Класс 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.
- С момента:
- JDK1.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 «формат double». |
static long |
doubleToRawLongBits(double value) Возвращает представление указанного значения с плавающей запятой в соответствии с битовым представлением IEEE 754 «формат double», сохраняя значения «не число» (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.
- С тех пор как:
- JDK1.1
Конструкторы
Double
public Double(double value)
Создаёт новый объект Double , представляющий примитивное значение double.
- Параметры:
-
value- значение, которое будет представлено объектомDouble.
Double
public Double(String s)
throws NumberFormatException Создаёт новый объект Double , представляющий значение с плавающей точкой типа double, представленное строкой. Строка преобразуется в значение с плавающей точкой так же, как и методом valueOf.
- Параметры:
-
s- строка, которая должна быть преобразована в число с плавающей точкой. - Исключения:
-
NumberFormatException- если строка не содержит парсируемого числа. - См. также:
valueOf(java.lang.String)
Методы
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; или, если два значения с плавающей точкой одинаково близки к x, тогда d должно быть одним из них, и наименее значимый бит значащей части d должен быть 0.
Для создания локализованных строковых представлений значения с плавающей точкой используйте подклассы NumberFormat.
- Параметры:
-
d- число с плавающей точкой для преобразования. - Возвращает:
- строковое представление аргумента.
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 равен значению double с плавающей точкой; литерал float представляет другое числовое значение, чем литерал double с плавающей точкой. (Число 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, содержащий значение, представленное строкой-аргументом. - Исключения:
-
NumberFormatException- если строка не содержит разборчивого числа.
valueOf
public static Double valueOf(double d)
Возвращает экземпляр Double, представляющий указанное значение с плавающей точкой double. Если новый экземпляр Double не требуется, этот метод обычно следует использовать вместо конструктора Double(double), так как этот метод, вероятно, обеспечит значительно лучшую производительность за счёт кэширования часто запрашиваемых значений.
- Параметры:
-
d- значение типа double. - Возвращает:
- экземпляр
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- проверяемое значение с плавающей точкой - Возвращает:
-
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 с одним аргументом.
- Overrides:
-
toStringв классеObject - Возвращает:
- строковое представление этого объекта.
- См. также:
toString(double)
byteValue
public byte byteValue()
Возвращает значение этого Double в виде byte после сужающего примитивного преобразования.
- Overrides:
-
byteValueв классеNumber - Возвращает:
- значение
double, представленное этим объектом, преобразованное к типуbyte - Since:
- JDK1.1
shortValue
public short shortValue()
Возвращает значение этого Double в виде short после сужающего примитивного преобразования.
- Overrides:
-
shortValueв классеNumber - Возвращает:
- значение
double, представленное этим объектом, преобразованное к типуshort - Since:
- JDK1.1
intValue
public int intValue()
Возвращает значение этого Double в виде int после сужающего примитивного преобразования.
- Specified by:
-
intValueв классеNumber - Возвращает:
- значение
double, представленное этим объектом, преобразованное к типуint
longValue
public long longValue()
Возвращает значение этого Double в виде long после сужающего примитивного преобразования.
- Specified by:
-
longValueв классеNumber - Возвращает:
- значение
double, представленное этим объектом, преобразованное к типуlong
floatValue
public float floatValue()
Возвращает значение этого Double в виде float после сужающего примитивного преобразования.
- Specified by:
-
floatValueв классеNumber - Возвращает:
- значение
double, представленное этим объектом, преобразованное к типуfloat - Since:
- JDK1.0
doubleValue
public double doubleValue()
Возвращает значение double этого Double объекта.
- Specified by:
-
doubleValueв классеNumber - Возвращает:
- значение
double, представленное этим объектом
hashCode
public int hashCode()
Возвращает хэш-код для этого Double объекта. Результатом является исключающее ИЛИ двух половин long целочисленного двоичного представления, точно так же, как это производится методом doubleToLongBits(double) для примитивного double значения, представленного этим Double объектом. То есть, хэш-код равен значению выражения:
(int)(v^(v>>>32))где
v определяется как: long v = Double.doubleToLongBits(this.doubleValue());
- Overrides:
-
hashCodeв классеObject - Возвращает:
- значение хэш-кода для этого объекта.
- См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
hashCode
public static int hashCode(double value)
Возвращает хэш-код для значения double; совместимо с Double.hashCode().
- Parameters:
-
value- значение для хэширования - Возвращает:
- значение хэш-кода для значения
double. - Since:
- 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.
- Overrides:
-
equalsв классеObject - Parameters:
-
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).
- Parameters:
-
value- число с плавающей запятой двойной точности. - Возвращает:
- биты, представляющие число с плавающей запятой.
doubleToRawLongBits
public static long doubleToRawLongBits(double value)
Возвращает представление указанного значения с плавающей запятой в соответствии с битовым представлением IEEE 754 "формат double", сохраняя значения Not-a-Number (NaN).
Бит 63 (бит, выбранный маской 0x8000000000000000L) представляет знак числа с плавающей запятой. Биты 62-52 (биты, выбранные маской 0x7ff0000000000000L) представляют экспоненту. Биты 51-0 (биты, выбранные маской 0x000fffffffffffffL) представляют мантиссу (иногда называемую значащими цифрами) числа с плавающей запятой.
Если аргумент равен положительной бесконечности, результат равен 0x7ff0000000000000L.
Если аргумент равен отрицательной бесконечности, результат равен 0xfff0000000000000L.
Если аргумент равен NaN, результат — это целочисленное значение long , представляющее фактическое значение NaN. В отличие от метода doubleToLongBits, метод doubleToRawLongBits не сводит все битовые шаблоны, кодирующие NaN, к одному "каноническому" значению NaN.
Во всех случаях результат является целочисленным значением long, которое, при передаче методу longBitsToDouble(long), произведёт значение с плавающей запятой, такое же, как аргумент к doubleToRawLongBits.
- Parameters:
-
value- число с плавающей запятой двойной точности. - Возвращает:
- биты, представляющие число с плавающей запятой.
- Since:
- 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; Тогда результат с плавающей точкой равен значению математического выражения s·m·2e-1075. Обратите внимание, что этот метод может не быть способен вернуть double 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(включая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) Сравнивает два заданных значения double. Знак возвращаемого целочисленного значения совпадает со знаком целого числа, которое было бы возвращено вызовом:
new Double(d1).compareTo(new Double(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 вместе, как и оператор +.
- Параметры:
-
a- первый операнд -
b- второй операнд - Возвращает:
- сумма
aиb - С:
- 1.8
- См. также:
BinaryOperator
max
public static double max(double a,
double b) Возвращает большее из двух значений double как если бы вызывалась Math.max.
- Параметры:
-
a- первый операнд -
b- второй операнд - Возвращает:
- большее из
aиb - С:
- 1.8
- См. также:
BinaryOperator
min
public static double min(double a,
double b) Возвращает меньшее из двух значений double как если бы вызывалась 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.