Spec-Zone.ru › OpenJDK 25

Класс Float

java.lang.Object
java.lang.Number
java.lang.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
Внешние спецификации
  • Стандарт IEEE для арифметики с плавающей точкой
См. также:
  • Сериализованная форма

Краткое описание полей

Модификатор и тип Поле Описание
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<Float> TYPE
Экземпляр Class, представляющий примитивный тип float.

Краткое описание конструкторов

Конструктор Описание
Float(double value)
Устарел.
Использование этого конструктора редко бывает оправданным.
Float(float value)
Устарел.
Использование этого конструктора редко бывает оправданным.
Float(String s)
Устарел.
Использование этого конструктора редко бывает оправданным.

Краткое описание методов

Модификатор и тип Метод Описание
byte byteValue()
Возвращает значение этого Float как byte после сужающего преобразования примитивного типа.
static int compare(float f1, float f2)
Сравнивает два указанных значения float.
int compareTo(Float anotherFloat)
Сравнивает численно два объекта Float.
Optional<Float> describeConstable()
Возвращает Optional, содержащий номинальный дескриптор этого экземпляра, которым является сам экземпляр.
double doubleValue()
Возвращает значение этого Float как double после расширяющего преобразования примитивного типа.
boolean equals(Object obj)
Сравнивает этот объект с указанным объектом.
static float float16ToFloat(short floatBinary16)
Возвращает значение float, ближайшее к числовому значению аргумента — значению с плавающей точкой binary16, закодированному в short.
static short floatToFloat16(float f)
Возвращает значение с плавающей точкой binary16, закодированное в short, ближайшее по значению к аргументу.
static int floatToIntBits(float value)
Возвращает представление указанного значения с плавающей точкой в соответствии с битовой раскладкой формата IEEE 754 «single».
static int floatToRawIntBits(float value)
Возвращает представление указанного значения с плавающей точкой в соответствии с битовой раскладкой формата IEEE 754 «single», сохраняя значения «не число» (NaN).
float floatValue()
Возвращает значение float этого объекта Float.
int hashCode()
Возвращает хеш-код этого объекта Float.
static int hashCode(float value)
Возвращает хеш-код значения float; совместим с Float.hashCode().
static float intBitsToFloat(int bits)
Возвращает значение float, соответствующее заданному битовому представлению.
int intValue()
Возвращает значение этого Float как int после сужающего преобразования примитивного типа.
static boolean isFinite(float f)
Возвращает true, если аргумент является конечным значением с плавающей точкой; в противном случае возвращает false (для аргументов NaN и бесконечности).
boolean isInfinite()
Возвращает true, если модуль этого значения Float бесконечно велик; в противном случае возвращает false.
static boolean isInfinite(float v)
Возвращает true, если модуль указанного числа бесконечно велик; в противном случае возвращает false.
boolean isNaN()
Возвращает true, если это значение Float является значением «не число» (NaN); в противном случае возвращает false.
static boolean isNaN(float v)
Возвращает true, если указанное число является значением «не число» (NaN); в противном случае возвращает false.
long longValue()
Возвращает значение этого Float как long после сужающего преобразования примитивного типа.
static float max(float a, float b)
Возвращает большее из двух значений float, как если бы был вызван метод Math.max.
static float min(float a, float b)
Возвращает меньшее из двух значений float, как если бы был вызван метод Math.min.
static float parseFloat(String s)
Возвращает новый float, инициализированный значением, представленным указанным String, так же, как это выполняет метод valueOf класса Float.
Float resolveConstantDesc(MethodHandles.Lookup lookup)
Преобразует этот экземпляр в ConstantDesc; результатом является сам экземпляр.
short shortValue()
Возвращает значение этого Float как short после сужающего преобразования примитивного типа.
static float sum(float a, float b)
Складывает два значения float, как это делает оператор +.
static String toHexString(float f)
Возвращает строковое представление аргумента float в шестнадцатеричном формате.
String toString()
Возвращает строковое представление этого объекта Float.
static String toString(float f)
Возвращает строковое представление аргумента float.
static Float valueOf(float f)
Возвращает экземпляр Float, представляющий указанное значение float.
static Float valueOf(String s)
Возвращает объект Float, содержащий значение float, представленное строкой аргумента s.

Методы, объявленные в классе Object

clone, finalize, getClass, notify, notifyAll, wait, wait, 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
Константа, содержащая значение «не число» (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 форматируется в виде строки — в обычной или компьютерной научной записи, в зависимости от его значения.

Десятичное число — это число вида 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…sn0…0.0, где между sn и десятичным разделителем располагается ровно i нулей. Например, 123 × 102 форматируется как 12300.0.
    • Подслучай i < 0: dm форматируется как s1…sn+i.sn+i+1…sn, где справа от десятичного разделителя располагается ровно -i цифр. Например, 123 × 10-1 форматируется как 12.3.
  • Случай 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.

Для создания локализованных строковых представлений значения с плавающей точкой используйте подклассы 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". Обратите внимание, что в субнормальной значащей части должна быть хотя бы одна ненулевая цифра.
Примеры
Значение с плавающей точкой Шестнадцатеричная строка
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, описанному следующими правилами лексического синтаксиса:

FloatValue:
Signopt NaN
Signopt Infinity
Signopt FloatingPointLiteral
Signopt HexFloatingPointLiteral
SignedInteger
HexFloatingPointLiteral:
HexSignificand BinaryExponent FloatTypeSuffixopt
HexSignificand:
HexNumeral
HexNumeral .
0x HexDigitsopt . HexDigits
0X HexDigitsopt . HexDigits
BinaryExponent:
BinaryExponentIndicator SignedInteger
BinaryExponentIndicator:
p
P
где Sign, FloatingPointLiteral, HexNumeral, HexDigits, SignedInteger и FloatTypeSuffix определены в разделах лексической структуры Спецификации языка Java, за исключением того, что подчеркивания между цифрами не допускаются. Если 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
См. также:
  • valueOf(String)
  • Проблемы преобразования десятичного числа в двоичное и обратно

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 с одним аргументом.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление этого объекта String.
См. также:
  • toString(float)

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 в классе Object
Возвращает:
значение хеш-кода этого объекта.
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

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(float)

floatToIntBits

public static int floatToIntBits(float value)
Возвращает представление указанного значения с плавающей запятой в соответствии с битовой структурой формата IEEE 754 «single format».

Бит 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)
Возвращает представление указанного значения с плавающей запятой в соответствии с битовой структурой формата IEEE 754 «single format», сохраняя значения «не число» (NaN).

Бит 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;
Тогда результат с плавающей запятой равен значению математического выражения s·m·2e-150.

Обратите внимание, что этот метод может быть не в состоянии вернуть значение 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)
Возвращает значение с плавающей запятой формата binary16, закодированное в short, наиболее близкое по значению к аргументу. Преобразование выполняется с использованием режима округления до ближайшего четного. Особые случаи:
  • Если аргумент равен нулю, результатом будет ноль с тем же знаком, что и у аргумента.
  • Если аргумент — бесконечность, результатом будет бесконечность с тем же знаком, что и у аргумента.
  • Если аргумент — NaN, результатом будет NaN.
Формат binary16 подробнее рассматривается в описании метода 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
См. также:
  • BinaryOperator

max

public static float max(float a, float b)
Возвращает большее из двух значений float, как если бы был вызван метод Math.max.
Примечание к API:
Этот метод соответствует операции нахождения максимума, определенной в IEEE 754.
Параметры:
a — первый операнд
b — второй операнд
Возвращает:
большее из a и b
Начиная с:
1.8
См. также:
  • BinaryOperator

min

public static float min(float a, float b)
Возвращает меньшее из двух значений float, как если бы был вызван метод Math.min.
Примечание к API:
Этот метод соответствует операции нахождения минимума, определенной в IEEE 754.
Параметры:
a — первый операнд
b — второй операнд
Возвращает:
меньшее из a и b
Начиная с:
1.8
См. также:
  • BinaryOperator

describeConstable

public Optional<Float> describeConstable()
Возвращает Optional, содержащий номинальный дескриптор этого экземпляра, которым является сам экземпляр.
Определено в:
describeConstable в интерфейсе Constable
Возвращает:
Optional, описывающий экземпляр Float
Начиная с:
12

resolveConstantDesc

public Float resolveConstantDesc(MethodHandles.Lookup lookup)
Разрешает этот экземпляр как ConstantDesc; результатом является сам экземпляр.
Определено в:
resolveConstantDesc в интерфейсе ConstantDesc
Параметры:
lookup — игнорируется
Возвращает:
экземпляр Float
Начиная с:
12

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, способы обхода ограничений и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API