Spec-Zone.ru › OpenJDK 27

Класс 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)
Возвращает представление указанного значения с плавающей точкой в соответствии с битовой раскладкой формата «single» с плавающей точкой IEEE 754.
static int floatToRawIntBits(float value)
Возвращает представление указанного значения с плавающей точкой в соответствии с битовой раскладкой формата «single» с плавающей точкой IEEE 754, сохраняя значения «не число» (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
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
protected void finalize()
Устарел, подлежит удалению: этот элемент API может быть удален в будущей версии.
Финализация устарела и может быть удалена в будущем выпуске.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать до пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать до пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать до пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.

Подробное описание полей

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
Устарел.
Использовать этот конструктор обычно нецелесообразно. Для преобразования строки в примитив float используйте parseFloat(String), а для преобразования строки в объект Float — valueOf(String).
Создает новый объект Float, представляющий значение с плавающей точкой типа float, заданное строкой. Строка преобразуется в значение float так же, как при вызове метода valueOf.
Параметры:
s — строка, которую нужно преобразовать в Float.
Исключения:
NumberFormatException — если строка не содержит разбираемого числа.

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

toString

public static String toString(float f)
Возвращает строковое представление аргумента float. Все упомянутые ниже символы являются символами ASCII.
  • Если аргумент равен NaN, результатом является строка "NaN".
  • В противном случае результатом является строка, представляющая знак и модуль (абсолютное значение) аргумента. Если знак отрицательный, первым символом результата является '-' ('\u002D'); если знак положительный, в результате знак не указывается. Что касается модуля m:
    • Если m равен бесконечности, он представляется символами "Infinity"; таким образом, положительная бесконечность дает результат "Infinity", а отрицательная — "-Infinity".
    • Если m равен нулю, он представляется символами "0.0"; таким образом, отрицательный ноль дает результат "-0.0", а положительный — "0.0".
    • В остальных случаях m положителен и конечен. Он преобразуется в строку в два этапа:
      • Выбор десятичного числа: для представления m выбирается однозначно определенное десятичное число dm. Это десятичное число (почти всегда) является кратчайшим числом, которое округляется до m согласно правилу IEEE 754 для арифметики с плавающей точкой «к ближайшему».
      • Форматирование в виде строки: десятичное число dm форматируется в виде строки — либо в обычной, либо в компьютерной экспоненциальной записи, в зависимости от его значения.

Десятичное число — это число вида 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 для каждого из них. Другими словами, для сравнения значений float используется эквивалентность представлений.
Переопределяет:
equals в классе Object
Примечание к API:
Этот метод определён через floatToIntBits(float), а не через оператор == для значений float, поскольку оператор == не задаёт отношение эквивалентности, а для соблюдения контракта equals необходимо реализовать отношение эквивалентности; подробности см. в этом обсуждении равенства и эквивалентности чисел с плавающей запятой.
Параметры:
obj — объект для сравнения
Возвращает:
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).

Параметры:
value — число с плавающей запятой.
Возвращает:
биты, представляющие число с плавающей запятой.

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.

Параметры:
value — число с плавающей запятой.
Возвращает:
биты, представляющие число с плавающей запятой.
Начиная с:
1.3

intBitsToFloat

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

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

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

Если аргумент находится в диапазоне от 0x7f800001 до 0x7fffffff или в диапазоне от 0xff800001 до 0xffffffff, результатом является NaN. Ни одна операция с плавающей запятой IEEE 754, предоставляемая Java, не может различать два значения NaN одного типа с разными битовыми шаблонами. Различные значения NaN можно различить только с помощью метода Float.floatToRawIntBits.

Во всех остальных случаях пусть s, e и m — три значения, которые можно вычислить из аргумента:

int s = ((bits >> 31) == 0) ? 1 : -1;
int e = ((bits >> 23) & 0xff);
int m = (e == 0) ?
                (bits & 0x7fffff) << 1 :
                (bits & 0x7fffff) | 0x800000;
Тогда результат с плавающей запятой равен значению математического выражения 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>
Примечание к API:
Обсуждение различий между полным порядком, задаваемым этим методом, и полным порядком, определённым стандартом IEEE 754, см. в примечании к Double.compareTo(Double).
Параметры:
anotherFloat — объект типа Float для сравнения.
Возвращает:
значение 0, если anotherFloat численно равно этому Float; значение меньше 0, если это Float численно меньше anotherFloat; и значение больше 0, если это Float численно больше anotherFloat.
См. Спецификация языка Java:
15.20.1 Операторы числового сравнения <, <=, > и >=
Начиная с:
1.2

compare

public static int compare(float f1, float f2)
Сравнивает два указанных значения float. Знак возвращаемого целого числа совпадает со знаком целого числа, которое вернул бы вызов:
   Float.valueOf(f1).compareTo(Float.valueOf(f2))
Примечание к API:
Один из способов реализовать эквивалентность представлений для значений float:
Float.compare(a, b) == 0
Параметры:
f1 — первое значение float для сравнения.
f2 — второе значение float для сравнения.
Возвращает:
значение 0, если f1 численно равно f2; значение меньше 0, если f1 численно меньше f2; и значение больше 0, если f1 численно больше f2.
Начиная с:
1.4

sum

public static float sum(float a, float b)
Складывает два значения float с помощью оператора +.
Примечание к API:
Этот метод соответствует операции сложения, определённой в IEEE 754.
Параметры:
a — первый операнд
b — второй операнд
Возвращает:
сумму a и b
См. Спецификация языка Java:
4.2.4 Операции с плавающей запятой
Начиная с:
1.8
См. также:
  • 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, 2026, 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.

Spec-Zone.ru

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