Spec-Zone.ru › OpenJDK 24

Класс 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)
Устарел, для удаления: Этот элемент API может быть удален в будущей версии.
Использование этого конструктора редко оправдано.
Float(float value)
Устарел, для удаления: Этот элемент API может быть удален в будущей версии.
Использование этого конструктора редко оправдано.
Float(String s)
Устарел, для удаления: Этот элемент API может быть удален в будущей версии.
Использование этого конструктора редко оправдано.

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

Модификатор и тип Метод Описание
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 format".
static int floatToRawIntBits(float value)
Возвращает представление указанного значения с плавающей точкой в соответствии с битовым представлением формата с плавающей точкой IEEE 754 "single format", сохраняя значения Not-a-Number (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 равно Not-a-Number (NaN), false в противном случае.
static boolean isNaN(float v)
Возвращает true, если указанное число является значением Not-a-Number (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.

Методы, объявленные в классе java.lang.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", forRemoval=true) public Float(float value)
Устарело, для удаления: Этот элемент API может быть удален в будущей версии.
Использование этого конструктора редко оправдано. Статический фабричный метод valueOf(float) обычно предпочтительнее, так как он, скорее всего, обеспечит существенно лучшую производительность в отношении памяти и времени.
Создает новый объект Float, представляющий примитивное значение float.
Параметры:
value - значение, которое будет представлено объектом Float.

Float

@Deprecated(since="9", forRemoval=true) public Float(double value)
Устарело, для удаления: Этот элемент API может быть удален в будущей версии.
Использование этого конструктора редко оправдано. Вместо этого используйте статический фабричный метод valueOf(float), как показано ниже: Float.valueOf((float)value).
Создает новый объект Float, представляющий аргумент, преобразованный к типу float.
Параметры:
value - значение, которое будет представлено объектом Float.

Float

@Deprecated(since="9", forRemoval=true) public Float(String s) throws NumberFormatException
Устарело, для удаления: Этот элемент API может быть удален в будущей версии.
Использование этого конструктора редко оправдано. Используйте parseFloat(String) для преобразования строки в примитивное значение float или используйте valueOf(String) для преобразования строки в объект Float.
Создает новый объект Float, представляющий значение с плавающей запятой типа float, представленное строкой. Строка преобразуется в значение с плавающей запятой так, как если бы это делал метод valueOf.
Параметры:
s - строка, которая должна быть преобразована в значение с плавающей запятой Float.
Исключения:
NumberFormatException - если строка не содержит разбираемого числа.

Подробное описание методов

END_OF_DOCUMENT_MARKER ```

toString

public static String toString(float f)
Возвращает строковое представление аргумента с плавающей точкой. Все упоминаемые ниже символы являются символами ASCII.
  • Если аргумент NaN, результатом является строка "NaN".
  • В противном случае, результатом является строка, представляющая знак и модуль (абсолютное значение) аргумента. Если знак отрицательный, первый символ результата — '-' ('\u002D'); если знак положительный, символ знака в результате не появляется. Что касается модуля m:
    • Если m бесконечен, он представляется символами "Infinity"; таким образом, положительная бесконечность производит результат "Infinity", а отрицательная бесконечность — результат "-Infinity".
    • Если m равен нулю, он представляется символами "0.0"; таким образом, отрицательный ноль производит результат "-0.0", а положительный ноль — результат "0.0".
    • В противном случае m положительный и конечный. Он преобразуется в строку в два этапа:
      • Выбор десятичного числа: Выбирается хорошо определенное десятичное число dm для представления m. Это десятичное число (почти всегда) является наикратчайшим, которое округляется до 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, где ровно -(n + i) нулей между десятичной точкой и s1. Например, 123 × 10-4 форматируется как 0.0123.
  • Случай 0 ≤ e < 7:
    • Подслучай i ≥ 0: dm форматируется как s1…sn0…0.0, где ровно i нулей между sn и десятичной точкой. Например, 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 Note:
Этот метод соответствует общей функциональности операции 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
Parameters:
f - преобразуемое значение с float.
Returns:
строковое представление аргумента.

toHexString

public static String toHexString(float f)
Возвращает шестнадцатеричное строковое представление аргумента с плавающей точкой. Все упоминаемые ниже символы являются символами ASCII.
  • Если аргумент NaN, результатом является строка "NaN".
  • В противном случае, результатом является строка, представляющая знак и модуль (абсолютное значение) аргумента. Если знак отрицательный, первый символ результата — '-' ('\u002D'); если знак положительный, символ знака в результате не появляется. Что касается модуля m:
    • Если m бесконечен, он представляется строкой "Infinity"; таким образом, положительная бесконечность производит результат "Infinity", а отрицательная бесконечность — результат "-Infinity".
    • Если m равен нулю, он представляется строкой "0x0.0p0"; таким образом, отрицательный ноль производит результат "-0x0.0p0", а положительный ноль — результат "0x0.0p0".
    • Если m — нормализованное значение с плавающей точкой, подстроки используются для представления полей мантиссы и экспоненты. Мантисса представляется символами "0x1.", за которыми следует шестнадцатеричное представление остальной части мантиссы как дроби. Завершающие нули в шестнадцатеричном представлении удаляются, за исключением случая, когда все цифры нули, в котором используется одна цифра ноль. Далее, экспонента представляется символами "p", за которыми следует десятичная строка смещённой экспоненты, как если бы она была получена при вызове Integer.toString для значения экспоненты.
    • Если m — значение с плавающей точкой с поднормализованным представлением, мантисса представляется символами "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 Note:
Этот метод соответствует операции convertToHexCharacter, определенной в IEEE 754.
Parameters:
f - преобразуемое значение с float.
Returns:
шестнадцатеричное строковое представление аргумента.
Since:
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, если аргумент является конечным значением с плавающей точкой; возвращает false в противном случае (для аргументов NaN и бесконечности).
Примечание API:
Этот метод соответствует операции isFinite, определённой в IEEE 754.
Параметры:
f — значение с плавающей точкой, подлежащее проверке
Возвращает:
true, если аргумент является конечным значением с плавающей точкой, false в противном случае.
С:
1.8

isNaN

public boolean isNaN()
Возвращает true, если это значение с плавающей точкой является «не числом» (NaN), false в противном случае.
Возвращает:
true, если значение, представленное этим объектом, равно NaN; false в противном случае.

isInfinite

public boolean isInfinite()
Возвращает true, если это значение с плавающей точкой бесконечно велико по модулю, false в противном случае.
Возвращает:
true, если значение, представленное этим объектом, равно положительной или отрицательной бесконечности; false в противном случае.

toString

public String toString()
Возвращает строковое представление этого объекта Float. Примитивное значение float, представленное этим объектом, преобразуется в строку String точно так же, как методом toString с одним аргументом.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление этого объекта.
См. также:
  • toString(float)

byteValue

public byte byteValue()
Возвращает значение этого Float в виде byte после сужающего примитивного преобразования.
Overrides:
byteValue в классе Number
Returns:
значение float, представленное этим объектом, преобразованное к типу byte
См. Спецификацию языка Java:
5.1.3 Сужающее примитивное преобразование

shortValue

public short shortValue()
Возвращает значение этого Float в виде short после сужающего примитивного преобразования.
Overrides:
shortValue в классе Number
Returns:
значение float, представленное этим объектом, преобразованное к типу short
См. Спецификацию языка Java:
5.1.3 Сужающее примитивное преобразование
Since:
1.1

intValue

public int intValue()
Возвращает значение этого Float в виде int после сужающего примитивного преобразования.
Specified by:
intValue в классе Number
API Note:
Этот метод соответствует операции convertToIntegerTowardZero, определённой в IEEE 754.
Returns:
значение float, представленное этим объектом, преобразованное к типу int
См. Спецификацию языка Java:
5.1.3 Сужающее примитивное преобразование

longValue

public long longValue()
Возвращает значение этого Float в виде long после сужающего примитивного преобразования.
Specified by:
longValue в классе Number
API Note:
Этот метод соответствует операции convertToIntegerTowardZero, определённой в IEEE 754.
Returns:
значение float, представленное этим объектом, преобразованное к типу long
См. Спецификацию языка Java:
5.1.3 Сужающее примитивное преобразование

floatValue

public float floatValue()
Возвращает значение с плавающей точкой этого объекта Float.
Specified by:
floatValue в классе Number
Returns:
значение с плавающей точкой, представленное этим объектом

doubleValue

public double doubleValue()
Возвращает значение этого Float в виде double после расширяющего примитивного преобразования.
Specified by:
doubleValue в классе Number
API Note:
Этот метод соответствует операции convertFormat, определённой в IEEE 754.
Returns:
значение float, представленное этим объектом, преобразованное к типу double
См. Спецификацию языка Java:
5.1.2 Расширяющее примитивное преобразование

hashCode

public int hashCode()
Возвращает хеш-код для этого объекта Float. Результат — целое число, представляющее битовую запись, точно так, как возвращает метод floatToIntBits(float), примитивного значения с плавающей точкой float, представленного этим объектом Float.
Overrides:
hashCode в классе Object
Returns:
значение хеш-кода для этого объекта.
См. Также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

hashCode

public static int hashCode(float value)
Возвращает хеш-код для значения с плавающей точкой; совместимо с Float.hashCode().
Parameters:
value - значение для хеширования
Returns:
значение хеш-кода для значения с плавающей точкой.
Since:
1.8

equals

public boolean equals(Object obj)
Сравнивает этот объект с указанным объектом. Результат — true тогда и только тогда, когда аргумент не null и является объектом типа Float, представляющим значение с плавающей точкой float с тем же значением, что и значение с плавающей точкой float, представленное этим объектом. Для этой цели два значения с плавающей точкой считаются одинаковыми тогда и только тогда, когда метод floatToIntBits(float) возвращает то же самое значение int, когда применяется к каждому.
Overrides:
equals в классе Object
API Note:
Этот метод определяется через floatToIntBits(float), а не через оператор == на значениях с плавающей точкой float, так как оператор == не определяет отношение эквивалентности и для удовлетворения контракта `equals` должна быть реализована эквивалентность; см. это обсуждение для получения подробной информации о равенстве и эквивалентности с плавающей точкой.
Parameters:
obj - сравниваемый объект
Returns:
true, если объекты одинаковые; false в противном случае.
См. Спецификацию языка Java:
15.21.1 Числовые операторы равенства == и !=
См. Также:
  • floatToIntBits(float)

floatToIntBits

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

Бит 31 (выбирается маской 0x80000000) представляет знак числа с плавающей точкой. Бит 30-23 (выбираются маской 0x7f800000) представляют экспоненту. Бит 22-0 (выбираются маской 0x007fffff) представляют мантиссу (иногда называемую значащей частью) числа с плавающей точкой.

Если аргумент — положительная бесконечность, результат — 0x7f800000.

Если аргумент — отрицательная бесконечность, результат — 0xff800000.

Если аргумент — NaN, результат — 0x7fc00000.

Во всех случаях результатом является целое число, которое, если подать его в метод intBitsToFloat(int), произведёт значение с плавающей точкой, такое же, как аргумент для floatToIntBits (за исключением того, что все значения NaN сводятся к одному «каноническому» значению NaN).

Parameters:
value - число с плавающей точкой.
Returns:
биты, представляющие число с плавающей точкой.

floatToRawIntBits

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

Бит 31 (выбирается маской 0x80000000) представляет знак числа с плавающей точкой. Бит 30-23 (выбираются маской 0x7f800000) представляют экспоненту. Бит 22-0 (выбираются маской 0x007fffff) представляют мантиссу (иногда называемую значащей частью) числа с плавающей точкой.

Если аргумент — положительная бесконечность, результат — 0x7f800000.

Если аргумент — отрицательная бесконечность, результат — 0xff800000.

Если аргумент — NaN, результатом является целое число, представляющее фактическое значение NaN. В отличие от метода floatToIntBits, метод floatToRawIntBits не сводит все битовые шаблоны, кодирующие NaN, к одному «каноническому» значению NaN.

Во всех случаях результатом является целое число, которое, если подать его в метод intBitsToFloat(int), произведёт значение с плавающей точкой, такое же, как аргумент для floatToRawIntBits.

Parameters:
value - число с плавающей точкой.
Returns:
биты, представляющие число с плавающей точкой.
Since:
1.3

intBitsToFloat

public static float intBitsToFloat(int bits)
Возвращает значение с плавающей точкой, соответствующее заданному представлению в битах. Аргумент рассматривается как представление значения с плавающей точкой в соответствии с битовой структурой "формата одинарной точности" 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;
Тогда результат с плавающей точкой равен значению математического выражения s·m·2e-150.

Обратите внимание, что этот метод может не быть в состоянии вернуть float NaN с точно таким же битовым шаблоном, как и аргумент 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)
Возвращает значение с плавающей точкой, наиболее близкое к числовому значению аргумента, значению с плавающей точкой 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, знаковые бесконечности, знаковые нули и субнормальные значения. Параметры (JLS 4.2.3) для формата binary16 составляют N = 11 разрядных битов точности, K = 5 разрядных битов порядка, Emax = 15 и Emin = -14.
Примечание API:
Этот метод соответствует операции convertFormat, определенной в IEEE 754, от формата binary16 к формату binary32. Работа этого метода аналогична примитивному расширяющему преобразованию (JLS 5.1.2).
Параметры:
floatBinary16 — значение binary16 для преобразования в 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 не упорядочен по отношению к другим значениям и не равен самому себе в операторах сравнения. Этот метод выбирает определение NaN как равного самому себе и большего, чем все другие значения с плавающей точкой (включая 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.valueOf(f1).compareTo(Float.valueOf(f2))
 
Параметры:
f1 — первое значение с плавающей точкой для сравнения.
f2 — второе значение с плавающей точкой для сравнения.
Возвращает:
значение 0, если f1 численно равно f2; значение меньше 0, если f1 численно меньше f2; и значение больше 0, если f1 численно больше f2.
С:
1.4

sum

public static float sum(float a, float b)
Складывает два значения с плавающей точкой в соответствии с оператором +.
Примечание API:
Этот метод соответствует операции сложения, определенной в IEEE 754.
Параметры:
a — первый операнд
b — второй операнд
Возвращает:
сумму a и b
См. Спецификацию языка Java:
4.2.4 Операции с плавающей точкой
С:
1.8
См. также:
  • BinaryOperator

max

public static float max(float a, float b)
Возвращает большее из двух значений с плавающей точкой, как если бы было вызвано 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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/Float.html

Spec-Zone.ru

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