Класс Float
- Все реализуемые интерфейсы:
Serializable, Comparable<Float>, Constable, ConstantDesc
public final class Float extends Number implements Comparable<Float>, Constable, ConstantDesc
Float является классом-оболочкой для значений примитивного типа float. Объект типа Float содержит одно поле типа float. Кроме того, этот класс предоставляет несколько методов для преобразования float в String и String в float, а также другие константы и методы, полезные при работе с float.
Это класс, основанный на значениях; программистам следует считать экземпляры, которые равны, взаимозаменяемыми и не использовать экземпляры для синхронизации, иначе возможно непредсказуемое поведение. Например, в будущем выпуске синхронизация может завершиться неудачей.
Равенство, эквивалентность и сравнение чисел с плавающей точкой
В классеjava.lang.Double содержится обсуждение равенства, эквивалентности и сравнения значений с плавающей точкой, которое в равной степени применимо к значениям float. Проблемы преобразования между десятичной и двоичной системами
Обсуждение проблем преобразования двоичных чисел в десятичные вjava.lang.Double также применимо к значениям float.- Начиная с версии:
- 1.0
- Внешние спецификации
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
BYTES |
Количество байтов, используемых для представления значения float: 4. |
static final int |
MAX_EXPONENT |
Максимальное значение экспоненты конечной переменной float: 127. |
static final float |
MAX_VALUE |
Константа, содержащая наибольшее положительное конечное значение типа float: (2-2-23)·2127. |
static final int |
MIN_EXPONENT |
Минимальное значение экспоненты нормализованной переменной float: -126. |
static final float |
MIN_NORMAL |
Константа, содержащая наименьшее положительное нормальное значение типа float: 2-126. |
static final float |
MIN_VALUE |
Константа, содержащая наименьшее положительное ненулевое значение типа float: 2-149. |
static final float |
NaN |
Константа, содержащая значение «не число» (NaN) типа float. |
static final float |
NEGATIVE_INFINITY |
Константа, содержащая отрицательную бесконечность типа float. |
static final float |
POSITIVE_INFINITY |
Константа, содержащая положительную бесконечность типа float. |
static final int |
PRECISION |
Количество битов в мантиссе значения float: 24. |
static final int |
SIZE |
Количество битов, используемых для представления значения float: 32. |
static final Class |
TYPE |
Экземпляр Class, представляющий примитивный тип float. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Float |
Устарел. Использование этого конструктора оправдано лишь в редких случаях. |
Float |
Устарел. Использование этого конструктора оправдано лишь в редких случаях. |
Float |
Устарел. Использование этого конструктора оправдано лишь в редких случаях. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
byte |
byteValue() |
Возвращает значение этого Float как byte после сужающего преобразования примитивного типа. |
static int |
compare |
Сравнивает два указанных значения float. |
int |
compareTo |
Сравнивает два объекта Float численно. |
Optional |
describeConstable() |
Возвращает Optional, содержащий номинальный дескриптор этого экземпляра, которым является сам экземпляр. |
double |
doubleValue() |
Возвращает значение этого Float как double после расширяющего преобразования примитивного типа. |
boolean |
equals |
Сравнивает этот объект с указанным объектом. |
static float |
float16ToFloat |
Возвращает значение float, ближайшее к числовому значению аргумента — значению с плавающей точкой формата binary16, закодированному в short. |
static short |
floatToFloat16 |
Возвращает значение с плавающей точкой формата binary16, закодированное в
short, наиболее близкое по значению к аргументу. |
static int |
floatToIntBits |
Возвращает представление указанного значения с плавающей точкой в соответствии с битовой раскладкой формата «single» с плавающей точкой IEEE 754. |
static int |
floatToRawIntBits |
Возвращает представление указанного значения с плавающей точкой в соответствии с битовой раскладкой формата «single» с плавающей точкой IEEE 754, сохраняя значения «не число» (NaN). |
float |
floatValue() |
Возвращает значение float этого объекта Float. |
int |
hashCode() |
Возвращает хеш-код этого объекта Float. |
static int |
hashCode |
Возвращает хеш-код значения float; совместим с Float.hashCode(). |
static float |
intBitsToFloat |
Возвращает значение float, соответствующее заданному битовому представлению. |
int |
intValue() |
Возвращает значение этого Float как int после сужающего преобразования примитивного типа. |
static boolean |
isFinite |
Возвращает true, если аргумент является конечным значением с плавающей точкой; в противном случае возвращает false (для аргументов NaN и бесконечности). |
boolean |
isInfinite() |
Возвращает true, если модуль этого значения Float бесконечно велик; в противном случае возвращает false. |
static boolean |
isInfinite |
Возвращает true, если модуль указанного числа бесконечно велик; в противном случае возвращает false. |
boolean |
isNaN() |
Возвращает true, если это значение Float является значением «не число» (NaN); в противном случае возвращает false. |
static boolean |
isNaN |
Возвращает true, если указанное число является значением «не число» (NaN); в противном случае возвращает false. |
long |
longValue() |
Возвращает значение этого Float как long после сужающего преобразования примитивного типа. |
static float |
max |
Возвращает большее из двух значений float, как если бы был вызван метод Math.max. |
static float |
min |
Возвращает меньшее из двух значений float, как если бы был вызван метод Math.min. |
static float |
parseFloat |
Возвращает новый float, инициализированный значением, представленным указанным String, аналогично методу valueOf класса Float. |
Float |
resolveConstantDesc |
Разрешает этот экземпляр как ConstantDesc; результатом является сам экземпляр. |
short |
shortValue() |
Возвращает значение этого Float как short после сужающего преобразования примитивного типа. |
static float |
sum |
Складывает два значения float, как при использовании оператора +. |
static String |
toHexString |
Возвращает строковое представление аргумента float в шестнадцатеричном формате. |
String |
toString() |
Возвращает строковое представление этого объекта Float. |
static String |
toString |
Возвращает строковое представление аргумента float. |
static Float |
valueOf |
Возвращает экземпляр Float, представляющий указанное значение float. |
static Float |
valueOf |
Возвращает объект Float, содержащий значение float, представленное строковым аргументом s. |
Методы, объявленные в классе Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
protected void |
finalize() |
Устарел, подлежит удалению: этот элемент API может быть удален в будущей версии. Финализация устарела и может быть удалена в будущем выпуске. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать до пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать до пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать до пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
POSITIVE_INFINITY
public static final float POSITIVE_INFINITY
float. Она равна значению, возвращаемому Float.intBitsToFloat(0x7f800000).- См. также:
NEGATIVE_INFINITY
public static final float NEGATIVE_INFINITY
float. Она равна значению, возвращаемому Float.intBitsToFloat(0xff800000).- См. также:
NaN
public static final float NaN
float. Она эквивалентна значению, возвращаемомуFloat.intBitsToFloat(0x7fc00000).- См. также:
MAX_VALUE
public static final float MAX_VALUE
float, (2-2-23)·2127. Оно равно шестнадцатеричному литералу с плавающей точкой 0x1.fffffeP+127f, а также Float.intBitsToFloat(0x7f7fffff).- См. также:
MIN_NORMAL
public static final float MIN_NORMAL
float, 2-126. Оно равно шестнадцатеричному литералу с плавающей точкой 0x1.0p-126f, а также Float.intBitsToFloat(0x00800000).- Начиная с:
- 1.6
- См. также:
MIN_VALUE
public static final float MIN_VALUE
float, 2-149. Оно равно шестнадцатеричному литералу с плавающей точкой 0x0.000002P-126f, а также Float.intBitsToFloat(0x1).- См. также:
SIZE
public static final int SIZE
float, 32.- Начиная с:
- 1.5
- См. также:
PRECISION
public static final int PRECISION
float, 24. Это параметр N из раздела §4.2.3 Спецификации языка Java.- Начиная с:
- 19
- См. также:
MAX_EXPONENT
public static final int MAX_EXPONENT
float, 127. Он равен значению, возвращаемому
Math.getExponent(Float.MAX_VALUE).- Начиная с:
- 1.6
- См. также:
MIN_EXPONENT
public static final int MIN_EXPONENT
float, -126. Он равен значению, возвращаемому
Math.getExponent(Float.MIN_NORMAL).- Начиная с:
- 1.6
- См. также:
BYTES
public static final int BYTES
float, 4.- Начиная с:
- 1.8
- См. также:
TYPE
public static final Class<Float> TYPE
Class, представляющий примитивный тип float.- Начиная с:
- 1.1
Подробное описание конструкторов
Float
@Deprecated(since="9") public Float(float value)
valueOf(float), поскольку он, вероятно, обеспечивает значительно более эффективное использование памяти и производительность.Float, представляющий аргумент примитивного типа float.- Параметры:
-
value— значение, которое должен представлять объектFloat.
Float
@Deprecated(since="9") public Float(double value)
valueOf(float) следующим образом: Float.valueOf((float)value).Float, представляющий аргумент, преобразованный к типу float.- Параметры:
-
value— значение, которое должен представлять объектFloat.
Float
@Deprecated(since="9") public Float(String s) throws NumberFormatException
float используйте parseFloat(String), а для преобразования строки в объект Float — valueOf(String).Float, представляющий значение с плавающей точкой типа float, заданное строкой. Строка преобразуется в значение float так же, как при вызове метода valueOf.- Параметры:
-
s— строка, которую нужно преобразовать вFloat. - Исключения:
-
NumberFormatException— если строка не содержит разбираемого числа.
Подробное описание методов
toString
public static String toString(float f)
float. Все упомянутые ниже символы являются символами ASCII. - Если аргумент равен NaN, результатом является строка "
NaN". - В противном случае результатом является строка, представляющая знак и модуль (абсолютное значение) аргумента. Если знак отрицательный, первым символом результата является '
-' ('\u002D'); если знак положительный, в результате знак не указывается. Что касается модуля m:- Если m равен бесконечности, он представляется символами
"Infinity"; таким образом, положительная бесконечность дает результат"Infinity", а отрицательная —"-Infinity". - Если m равен нулю, он представляется символами
"0.0"; таким образом, отрицательный ноль дает результат"-0.0", а положительный —"0.0". - В остальных случаях m положителен и конечен. Он преобразуется в строку в два этапа:
- Выбор десятичного числа: для представления m выбирается однозначно определенное десятичное число dm. Это десятичное число (почти всегда) является кратчайшим числом, которое округляется до 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.
- Примечание к API:
- Этот метод соответствует общей функциональности операции convertToDecimalCharacter, определенной в IEEE 754; однако эта операция определена с указанием количества значащих цифр, используемых при преобразовании. Код для такого преобразования на платформе Java включает точное преобразование
floatвBigDecimalс последующим округлениемBigDecimalдо нужного количества цифр; пример кода:floatf = 0.1f; int digits = 15; BigDecimal bd = new BigDecimal(f); String result = bd.round(new MathContext(digits, RoundingMode.HALF_UP)); // 0.100000001490116 - Параметры:
-
f— значениеfloat, которое нужно преобразовать. - Возвращает:
- строковое представление аргумента.
toHexString
public static String toHexString(float f)
float. Все упомянутые ниже символы являются символами ASCII. - Если аргумент равен NaN, результатом является строка "
NaN". - В противном случае результатом является строка, представляющая знак и модуль (абсолютное значение) аргумента. Если знак отрицательный, первым символом результата является '
-' ('\u002D'); если знак положительный, в результате знак не указывается. Что касается модуля m:- Если m равен бесконечности, он представляется строкой
"Infinity"; таким образом, положительная бесконечность дает результат"Infinity", а отрицательная —"-Infinity". - Если m равен нулю, он представляется строкой
"0x0.0p0"; таким образом, отрицательный ноль дает результат"-0x0.0p0", а положительный —"0x0.0p0". - Если m является значением
floatс нормализованным представлением, для представления полей значащей части и показателя степени используются подстроки. Значащая часть представляется символами"0x1.", за которыми следует строчное шестнадцатеричное представление оставшейся части значащей части в виде дроби. Завершающие нули в шестнадцатеричном представлении удаляются, если только все цифры не равны нулю; в последнем случае используется один ноль. Затем показатель степени представляется символами"p", за которыми следует десятичная строка для смещенного показателя степени, сформированная так же, как при вызовеInteger.toStringдля значения показателя степени. - Если m является значением
floatс субнормальным представлением, значащая часть представляется символами"0x0.", за которыми следует шестнадцатеричное представление оставшейся части значащей части в виде дроби. Завершающие нули в шестнадцатеричном представлении удаляются. Затем показатель степени представляется символами"p-126". Обратите внимание, что субнормальная значащая часть должна содержать как минимум одну ненулевую цифру.
- Если 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 |
Float.MAX_VALUE | 0x1.fffffep127 |
Minimum Normal Value | 0x1.0p-126 |
Maximum Subnormal Value | 0x0.fffffep-126 |
Float.MIN_VALUE | 0x0.000002p-126 |
- Примечание к API:
- Этот метод соответствует операции convertToHexCharacter, определенной в IEEE 754.
- Параметры:
-
f— значениеfloat, которое нужно преобразовать. - Возвращает:
- шестнадцатеричное строковое представление аргумента.
- Начиная с:
- 1.5
valueOf
public static Float valueOf(String s) throws NumberFormatException
Float, содержащий значение float, представленное строкой аргумента 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 представляет точное десятичное значение в обычной «компьютерной экспоненциальной записи» или точное шестнадцатеричное значение; затем это точное числовое значение концептуально преобразуется в двоичное значение «бесконечной точности», которое округляется до типа float по обычному правилу округления IEEE 754 «к ближайшему» с сохранением знака нулевого значения. Обратите внимание, что правило округления «к ближайшему» также определяет поведение при переполнении и потере точности: если точное значение s достаточно велико по модулю (больше или равно (MAX_VALUE + ulp(MAX_VALUE)/2), округление до float приведет к бесконечности; если точное значение s достаточно мало по модулю (меньше или равно MIN_VALUE/2), округление до float приведет к нулю. Наконец, после округления возвращается объект Float, представляющий это значение float. Обратите внимание, что завершающие спецификаторы формата, определяющие тип литерала с плавающей точкой (1.0f — значение типа float; 1.0d — значение типа double), не влияют на результат этого метода. Иными словами, числовое значение входной строки напрямую преобразуется в целевой тип с плавающей точкой. В общем случае последовательность из двух преобразований — строка в double, а затем double в float — не эквивалентна непосредственному преобразованию строки в float. Например, если сначала преобразовать строку в промежуточное значение double, а затем в float, строка
"1.00000017881393421514957253748434595763683319091796875001d"
даст значение float 1.0000002f; если преобразовать строку непосредственно в float, результатом будет 1.0000001f.
Чтобы не вызывать этот метод с недопустимой строкой и не получать исключение NumberFormatException, в документации метода Double.valueOf приведено регулярное выражение, которое можно использовать для предварительной проверки входных данных.
- Примечание к API:
- Для интерпретации локализованных строковых представлений значений с плавающей точкой или строковых представлений с цифрами, отличными от ASCII, используйте
NumberFormat. Например:гдеNumberFormat.getInstance(l).parse(s).floatValue();l— нужная локаль, илиLocale.ROOT, если локаль не должна учитываться. Этот метод соответствует операциям convertFromDecimalCharacter и convertFromHexCharacter, определенным в IEEE 754. - Параметры:
-
s— строка для разбора. - Возвращает:
- объект
Float, содержащий значение, представленное аргументомString. - Исключения:
-
NumberFormatException— если строка не содержит разбираемого числа. - См. также:
valueOf
public static Float valueOf(float f)
Float, представляющий указанное значение float. Если новый экземпляр Float не требуется, этот метод, как правило, предпочтительнее конструктора Float(float), поскольку благодаря кэшированию часто запрашиваемых значений он, вероятно, обеспечивает значительно более эффективное использование памяти и производительность.- Параметры:
-
f— значение типа float. - Возвращает:
- экземпляр
Float, представляющийf. - Начиная с:
- 1.5
parseFloat
public static float parseFloat(String s) throws NumberFormatException
float, инициализированное значением, представленным указанным объектом String, как при вызове метода valueOf класса Float.- Параметры:
-
s— строка для разбора. - Возвращает:
- значение
float, представленное строковым аргументом. - Исключения:
-
NullPointerException— если строка равна null -
NumberFormatException— если строка не содержит разбираемого значенияfloat. - Начиная с:
- 1.2
- См. также:
isNaN
public static boolean isNaN(float v)
true, если указанное число является значением «не число» (NaN), и false в противном случае.- Примечание к API:
- Этот метод соответствует операции isNaN, определенной в IEEE 754.
- Параметры:
-
v— проверяемое значение. - Возвращает:
-
true, если аргумент равен NaN;falseв противном случае.
isInfinite
public static boolean isInfinite(float v)
true, если модуль указанного числа бесконечно велик, и false в противном случае.- Примечание к API:
- Этот метод соответствует операции isInfinite, определенной в IEEE 754.
- Параметры:
-
v— проверяемое значение. - Возвращает:
-
true, если аргумент равен положительной или отрицательной бесконечности;falseв противном случае.
isFinite
public static boolean isFinite(float f)
true, если аргумент является конечным значением с плавающей точкой; в противном случае (для аргументов NaN и бесконечность) возвращает false.- Примечание к API:
- Этот метод соответствует операции isFinite, определенной в IEEE 754.
- Параметры:
-
f— проверяемое значение типаfloat - Возвращает:
-
true, если аргумент является конечным значением с плавающей точкой; в противном случае —false. - Начиная с:
- 1.8
isNaN
public boolean isNaN()
true, если значение Float является значением «не число» (NaN), и false в противном случае.- Возвращает:
-
true, если значение, представленное этим объектом, равно NaN;falseв противном случае.
isInfinite
public boolean isInfinite()
true, если модуль значения Float бесконечно велик, и false в противном случае.- Возвращает:
-
true, если значение, представленное этим объектом, равно положительной или отрицательной бесконечности;falseв противном случае.
toString
public String toString()
Float. Примитивное значение float, представленное этим объектом, преобразуется в String точно так же, как при вызове метода toString с одним аргументом.byteValue
public byte byteValue()
Float как byte после сужающего преобразования примитивного типа.- Переопределяет:
-
byteValueв классеNumber - Возвращает:
- значение типа
float, представленное этим объектом и преобразованное к типуbyte - См. Спецификация языка Java:
- 5.1.3 Сужающее преобразование примитивного типа
shortValue
public short shortValue()
Float как short после сужающего преобразования примитивного типа.- Переопределяет:
-
shortValueв классеNumber - Возвращает:
- значение типа
float, представленное этим объектом и преобразованное к типуshort - См. Спецификация языка Java:
- 5.1.3 Сужающее преобразование примитивного типа
- Начиная с:
- 1.1
intValue
public int intValue()
Float как int после сужающего преобразования примитивного типа.- Определено в:
-
intValueв классеNumber - Примечание к API:
- Этот метод соответствует операции convertToIntegerTowardZero, определённой в IEEE 754.
- Возвращает:
- значение типа
float, представленное этим объектом и преобразованное к типуint - См. Спецификация языка Java:
- 5.1.3 Сужающее преобразование примитивного типа
longValue
public long longValue()
Float как long после сужающего преобразования примитивного типа.- Определено в:
-
longValueв классеNumber - Примечание к API:
- Этот метод соответствует операции convertToIntegerTowardZero, определённой в IEEE 754.
- Возвращает:
- значение типа
float, представленное этим объектом и преобразованное к типуlong - См. Спецификация языка Java:
- 5.1.3 Сужающее преобразование примитивного типа
floatValue
public float floatValue()
float этого объекта Float.- Определено в:
-
floatValueв классеNumber - Возвращает:
- значение типа
float, представленное этим объектом
doubleValue
public double doubleValue()
Float как double после расширяющего преобразования примитивного типа.- Определено в:
-
doubleValueв классеNumber - Примечание к API:
- Этот метод соответствует операции convertFormat, определённой в IEEE 754.
- Возвращает:
- значение типа
float, представленное этим объектом и преобразованное к типуdouble - См. Спецификация языка Java:
- 5.1.2 Расширяющее преобразование примитивного типа
hashCode
public int hashCode()
Float. Результатом является целочисленное битовое представление, в точности такое же, какое создаёт метод floatToIntBits(float) для значения примитивного типа float, представленного этим объектом Float.hashCode
public static int hashCode(float value)
float; совместим с Float.hashCode().- Параметры:
-
value— значение для вычисления хеша - Возвращает:
- значение хеш-кода для значения
float. - Начиная с:
- 1.8
equals
public boolean equals(Object obj)
true тогда и только тогда, когда аргумент не является null и представляет собой объект Float, представляющий float с тем же значением, что и float, представленное этим объектом. Для этой цели два значения float считаются одинаковыми тогда и только тогда, когда метод floatToIntBits(float) возвращает одинаковое значение int для каждого из них. Другими словами, для сравнения значений
float используется эквивалентность представлений.- Переопределяет:
-
equalsв классеObject - Примечание к API:
- Этот метод определён через
floatToIntBits(float), а не через оператор==для значенийfloat, поскольку оператор==не задаёт отношение эквивалентности, а для соблюдения контракта equals необходимо реализовать отношение эквивалентности; подробности см. в этом обсуждении равенства и эквивалентности чисел с плавающей запятой. - Параметры:
-
obj— объект для сравнения - Возвращает:
-
true, если объекты одинаковы;falseв противном случае. - См. Спецификация языка Java:
- 15.21.1 Операторы числового равенства == и !=
- См. также:
floatToIntBits
public static int floatToIntBits(float value)
Бит 31 (бит, выбранный маской 0x80000000) представляет знак числа с плавающей запятой. Биты 30–23 (биты, выбранные маской 0x7f800000) представляют порядок. Биты 22–0 (биты, выбранные маской 0x007fffff) представляют значащую часть (иногда называемую мантиссой) числа с плавающей запятой.
Если аргумент — положительная бесконечность, результат равен 0x7f800000.
Если аргумент — отрицательная бесконечность, результат равен 0xff800000.
Если аргумент — NaN, результат равен 0x7fc00000.
Во всех случаях результат представляет собой целое число, которое при передаче методу intBitsToFloat(int) создаст значение с плавающей запятой, совпадающее с аргументом для floatToIntBits (за исключением того, что все значения NaN сводятся к одному «каноническому» значению NaN).
- Параметры:
-
value— число с плавающей запятой. - Возвращает:
- биты, представляющие число с плавающей запятой.
floatToRawIntBits
public static int floatToRawIntBits(float value)
Бит 31 (бит, выбранный маской 0x80000000) представляет знак числа с плавающей запятой. Биты 30–23 (биты, выбранные маской 0x7f800000) представляют порядок. Биты 22–0 (биты, выбранные маской 0x007fffff) представляют значащую часть (иногда называемую мантиссой) числа с плавающей запятой.
Если аргумент — положительная бесконечность, результат равен 0x7f800000.
Если аргумент — отрицательная бесконечность, результат равен 0xff800000.
Если аргумент — NaN, результатом является целое число, представляющее фактическое значение NaN. В отличие от метода floatToIntBits, floatToRawIntBits не сводит все битовые шаблоны, кодирующие NaN, к одному «каноническому» значению NaN.
Во всех случаях результат представляет собой целое число, которое при передаче методу intBitsToFloat(int) создаст значение с плавающей запятой, совпадающее с аргументом для floatToRawIntBits.
- Параметры:
-
value— число с плавающей запятой. - Возвращает:
- биты, представляющие число с плавающей запятой.
- Начиная с:
- 1.3
intBitsToFloat
public static float intBitsToFloat(int bits)
float, соответствующее заданному битовому представлению. Аргумент рассматривается как представление значения с плавающей запятой в соответствии с битовой раскладкой формата «single» IEEE 754. Если аргумент равен 0x7f800000, результатом является положительная бесконечность.
Если аргумент равен 0xff800000, результатом является отрицательная бесконечность.
Если аргумент находится в диапазоне от 0x7f800001 до 0x7fffffff или в диапазоне от 0xff800001 до 0xffffffff, результатом является NaN. Ни одна операция с плавающей запятой IEEE 754, предоставляемая Java, не может различать два значения NaN одного типа с разными битовыми шаблонами. Различные значения NaN можно различить только с помощью метода Float.floatToRawIntBits.
Во всех остальных случаях пусть s, e и m — три значения, которые можно вычислить из аргумента:
int s = ((bits >> 31) == 0) ? 1 : -1;
int e = ((bits >> 23) & 0xff);
int m = (e == 0) ?
(bits & 0x7fffff) << 1 :
(bits & 0x7fffff) | 0x800000;
Обратите внимание, что этот метод может быть не в состоянии вернуть значение NaN float с точно таким же битовым шаблоном, как у аргумента int. IEEE 754 различает два типа NaN: тихие NaN и сигнальные NaN. Различия между этими типами NaN, как правило, незаметны в Java. Арифметические операции над сигнальными NaN преобразуют их в тихие NaN с другим, но часто похожим битовым шаблоном. Однако на некоторых процессорах даже простое копирование сигнального NaN выполняет такое преобразование. В частности, копирование сигнального NaN для возврата его вызывающему методу может выполнить это преобразование. Поэтому intBitsToFloat может оказаться не в состоянии вернуть float с битовым шаблоном сигнального NaN. Следовательно, для некоторых значений int результат floatToRawIntBits(intBitsToFloat(start)) может не совпадать с start. Кроме того, конкретные битовые шаблоны, представляющие сигнальные NaN, зависят от платформы; при этом все битовые шаблоны NaN, тихие или сигнальные, должны входить в указанный выше диапазон NaN.
- Параметры:
-
bits— целое число. - Возвращает:
- значение с плавающей запятой типа
floatс тем же битовым шаблоном.
float16ToFloat
public static float float16ToFloat(short floatBinary16)
float, ближайшее к числовому значению аргумента — значению с плавающей запятой формата binary16, закодированному в short. Преобразование выполняется точно; все значения binary16 могут быть точно представлены в float. Особые случаи: - Если аргумент равен нулю, результатом является ноль с тем же знаком, что и у аргумента.
- Если аргумент — бесконечность, результатом является бесконечность с тем же знаком, что и у аргумента.
- Если аргумент — NaN, результатом является NaN.
Формат IEEE 754 binary16
Стандарт IEEE 754 определяет binary16 как 16-битный формат наряду с 32-битным форматом binary32 (соответствующим типу
float) и 64-битным форматом binary64 (соответствующим типу double). Формат binary16 подобен другим форматам IEEE 754, но меньше; он включает все обычные значения IEEE 754, такие как NaN, знаковые бесконечности, знаковые нули и субнормальные числа. Параметры формата binary16 (JLS §4.2.3): N = 11 бит точности, K = 5 бит порядка, Emax = 15 и Emin = -14.- Примечание к API:
- Этот метод соответствует операции convertFormat, определённой в IEEE 754, для преобразования из формата binary16 в формат binary32. Работа этого метода аналогична расширяющему преобразованию примитивного типа (JLS §5.1.2).
- Параметры:
-
floatBinary16— значение binary16 для преобразования вfloat - Возвращает:
- значение типа
float, ближайшее к числовому значению аргумента — значению с плавающей запятой формата binary16, закодированному вshort - Начиная с:
- 20
floatToFloat16
public static short floatToFloat16(float f)
short, ближайшее по значению к аргументу. Преобразование выполняется с использованием режима округления до ближайшего с выбором чётного. Особые случаи: - Если аргумент равен нулю, результатом является ноль с тем же знаком, что и у аргумента.
- Если аргумент — бесконечность, результатом является бесконечность с тем же знаком, что и у аргумента.
- Если аргумент — NaN, результатом является NaN.
float16ToFloat(short).- Примечание к API:
- Этот метод соответствует операции convertFormat, определённой в IEEE 754, для преобразования из формата binary32 в формат binary16. Работа этого метода аналогична сужающему преобразованию примитивного типа (JLS §5.1.3).
- Параметры:
-
f— значение типаfloatдля преобразования в binary16 - Возвращает:
- значение с плавающей запятой формата binary16, закодированное в
short, ближайшее по значению к аргументу - Начиная с:
- 20
compareTo
public int compareTo(Float anotherFloat)
Float численно. Этот метод задаёт полный порядок для объектов Float, который отличается в двух отношениях от неполного порядка, заданного операторами числового сравнения языка Java (<, <=,
==, >=, >) для значений float. - Значение NaN не упорядочено относительно других значений и не равно самому себе при использовании операторов сравнения. Этот метод определяет
Float.NaNкак равное самому себе и большим, чем все остальные значенияdouble(включаяFloat.POSITIVE_INFINITY). - Положительный и отрицательный ноль численно равны, но являются различными и различимыми значениями. Этот метод определяет положительный ноль (
+0.0f) как больший, чем отрицательный ноль (-0.0f).
Float, задаваемый этим методом, согласован с equals; подробности сравнения и упорядочивания чисел с плавающей запятой см. в этом обсуждении.- Определено в:
-
compareToв интерфейсеComparable<Float> - Примечание к API:
- Обсуждение различий между полным порядком, задаваемым этим методом, и полным порядком, определённым стандартом IEEE 754, см. в примечании к
Double.compareTo(Double). - Параметры:
-
anotherFloat— объект типаFloatдля сравнения. - Возвращает:
- значение
0, еслиanotherFloatчисленно равно этомуFloat; значение меньше0, если этоFloatчисленно меньшеanotherFloat; и значение больше0, если этоFloatчисленно большеanotherFloat. - См. Спецификация языка Java:
- 15.20.1 Операторы числового сравнения
<,<=,>и>=
- Начиная с:
- 1.2
compare
public static int compare(float f1, float f2)
float. Знак возвращаемого целого числа совпадает со знаком целого числа, которое вернул бы вызов: Float.valueOf(f1).compareTo(Float.valueOf(f2))
- Примечание к API:
- Один из способов реализовать эквивалентность представлений для значений
float:Float.compare(a, b) == 0 - Параметры:
-
f1— первое значениеfloatдля сравнения. -
f2— второе значениеfloatдля сравнения. - Возвращает:
- значение
0, еслиf1численно равноf2; значение меньше0, еслиf1численно меньшеf2; и значение больше0, еслиf1численно большеf2. - Начиная с:
- 1.4
sum
public static float sum(float a, float b)
float с помощью оператора +.- Примечание к API:
- Этот метод соответствует операции сложения, определённой в IEEE 754.
- Параметры:
-
a— первый операнд -
b— второй операнд - Возвращает:
- сумму
aиb - См. Спецификация языка Java:
- 4.2.4 Операции с плавающей запятой
- Начиная с:
- 1.8
- См. также:
max
public static float max(float a, float b)
float, как если бы был вызван метод Math.max.- Примечание к API:
- Этот метод соответствует операции нахождения максимума, определённой в IEEE 754.
- Параметры:
-
a— первый операнд -
b— второй операнд - Возвращает:
- большее из
aиb - Начиная с:
- 1.8
- См. также:
min
public static float min(float a, float b)
float, как если бы был вызван метод Math.min.- Примечание к API:
- Этот метод соответствует операции нахождения минимума, определённой в IEEE 754.
- Параметры:
-
a— первый операнд -
b— второй операнд - Возвращает:
- меньшее из
aиb - Начиная с:
- 1.8
- См. также:
describeConstable
public Optional<Float> describeConstable()
Optional, содержащий номинальный дескриптор этого экземпляра, которым является сам экземпляр.- Определено в:
-
describeConstableв интерфейсеConstable - Возвращает:
Optional, описывающий экземпляр Float- Начиная с:
- 12
resolveConstantDesc
public Float resolveConstantDesc(MethodHandles.Lookup lookup)
ConstantDesc; результатом является сам экземпляр.- Определено в:
-
resolveConstantDescв интерфейсеConstantDesc - Параметры:
-
lookup— игнорируется - Возвращает:
- экземпляр Float
- Начиная с:
- 12
© 1993, 2025, 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.