Класс 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 |
Возвращает представление указанного значения с плавающей точкой в соответствии с битовой раскладкой формата IEEE 754 «single». |
static int |
floatToRawIntBits |
Возвращает представление указанного значения с плавающей точкой в соответствии с битовой раскладкой формата IEEE 754 «single», сохраняя значения «не число» (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. |
Подробное описание полей
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
parseFloat(String) для преобразования строки в примитив float либо valueOf(String) для преобразования строки в объект Float.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.- Переопределяет:
-
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, соответствующее заданному битовому представлению. Аргумент считается представлением значения с плавающей запятой согласно битовой структуре формата IEEE 754 «single format». Если аргумент равен 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> - Параметры:
-
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))
- Параметры:
-
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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Float.html