Spec-Zone.ru › OpenJDK 25

Класс Math

java.lang.Object
java.lang.Math
public final class Math extends Object
Класс Math содержит методы для выполнения основных числовых операций, таких как элементарные экспоненциальные, логарифмические, тригонометрические функции и извлечение квадратного корня.

В отличие от некоторых числовых методов класса StrictMath, реализации эквивалентных функций класса Math не обязаны возвращать побитово одинаковые результаты. Это послабление позволяет использовать более производительные реализации, когда строгая воспроизводимость не требуется.

По умолчанию многие методы Math просто вызывают для своей реализации соответствующий метод из StrictMath. Разработчикам генераторов кода рекомендуется использовать, если они доступны, платформенные нативные библиотеки или инструкции микропроцессора для реализации методов Math с более высокой производительностью. Такие высокопроизводительные реализации по-прежнему должны соответствовать спецификации Math.

Спецификации качества реализации относятся к двум свойствам: точности возвращаемого результата и монотонности метода. Точность методов Math с плавающей точкой измеряется в ulpах — единицах на последнем разряде. Для заданного формата с плавающей точкой ulp конкретного действительного числа — это расстояние между двумя значениями с плавающей точкой, между которыми находится это число. При обсуждении точности метода в целом, а не для конкретного аргумента, указанное число ulp соответствует наихудшей ошибке для любого аргумента. Если ошибка метода всегда меньше 0,5 ulp, метод всегда возвращает ближайшее к точному результату число с плавающей точкой; такой метод является правильно округлённым. Метод с правильным округлением обычно является наилучшим вариантом аппроксимации с плавающей точкой; однако для многих методов с плавающей точкой правильное округление непрактично. Поэтому для класса Math для некоторых методов допускается большая граница погрешности — 1 или 2 ulp. Условно говоря, при границе погрешности в 1 ulp, если точный результат представим, в качестве вычисленного результата следует вернуть точный результат; в противном случае может быть возвращено любое из двух значений с плавающей точкой, между которыми находится точный результат. Для точных результатов с большой абсолютной величиной один из концов этого диапазона может быть бесконечностью. Помимо точности для отдельных аргументов важно также поддерживать правильные соотношения между значениями метода для разных аргументов. Поэтому большинство методов с погрешностью больше 0,5 ulp должны быть полумонотонными: если математическая функция неубывает, то и аппроксимация с плавающей точкой не убывает, и, аналогично, если математическая функция невозрастает, то и аппроксимация с плавающей точкой не возрастает. Не все аппроксимации с точностью 1 ulp автоматически удовлетворяют требованиям монотонности.

Платформа использует целочисленную арифметику в дополнительном коде со знаковыми примитивными типами int и long. Разработчик должен выбрать примитивный тип так, чтобы арифметические операции неизменно давали правильные результаты, что в некоторых случаях означает, что операции не должны выходить за допустимый диапазон вычисляемых значений. Рекомендуется выбирать примитивный тип и алгоритм, позволяющие избежать переполнения. В случаях, когда размер равен int или long и необходимо обнаруживать ошибки переполнения, методы, имена которых заканчиваются на Exact, при переполнении результата выбрасывают ArithmeticException.

Рекомендуемые операции IEEE 754

Редакция стандарта IEEE 754 для арифметики с плавающей точкой 2019 года включает раздел с рекомендуемыми операциями и семантикой этих операций, если они входят в программную среду. В этот класс включены следующие рекомендуемые операции: sin, cos, tan, asin, acos, atan, exp, expm1, log, log10, log1p, sinh, cosh, tanh, hypot и pow. (Операция sqrt является обязательной частью IEEE 754 и описана в другом разделе стандарта.) Поведение рекомендуемых операций в особых случаях в целом соответствует рекомендациям стандарта IEEE 754. Однако метод pow задаёт для некоторых аргументов иное поведение, описанное в его спецификации. Стандарт IEEE 754 требует, чтобы его операции выполнялись с правильным округлением; это более строгое требование к качеству реализации, чем требования к большинству рассматриваемых методов, также включённых в этот класс.
Начиная с версии:
1.0
Внешние спецификации
  • Стандарт IEEE для арифметики с плавающей точкой

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

Модификатор и тип Поле Описание
static final double E
Значение double, наиболее близкое к e — основанию натуральных логарифмов.
static final double PI
Значение double, наиболее близкое к pi (π) — отношению длины окружности к её диаметру.
static final double TAU
Значение double, наиболее близкое к tau (τ) — отношению длины окружности к её радиусу.

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

Модификатор и тип Метод Описание
static double abs(double a)
Возвращает абсолютное значение значения double.
static float abs(float a)
Возвращает абсолютное значение значения float.
static int abs(int a)
Возвращает абсолютное значение значения int.
static long abs(long a)
Возвращает абсолютное значение значения long.
static int absExact(int a)
Возвращает математическое абсолютное значение значения int, если оно точно представимо как int, и выбрасывает ArithmeticException, если результат выходит за положительный диапазон int.
static long absExact(long a)
Возвращает математическое абсолютное значение значения long, если оно точно представимо как long, и выбрасывает ArithmeticException, если результат выходит за положительный диапазон long.
static double acos(double a)
Возвращает арккосинус значения; возвращаемый угол находится в диапазоне от 0,0 до pi.
static int addExact(int x, int y)
Возвращает сумму аргументов и выбрасывает исключение, если результат переполняет int.
static long addExact(long x, long y)
Возвращает сумму аргументов и выбрасывает исключение, если результат переполняет long.
static double asin(double a)
Возвращает арксинус значения; возвращаемый угол находится в диапазоне от −pi/2 до pi/2.
static double atan(double a)
Возвращает арктангенс значения; возвращаемый угол находится в диапазоне от −pi/2 до pi/2.
static double atan2(double y, double x)
Возвращает угол theta, полученный при преобразовании декартовых координат (x, y) в полярные координаты (r, theta).
static double cbrt(double a)
Возвращает кубический корень из значения double.
static double ceil(double a)
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение double, которое больше или равно аргументу и является математическим целым числом.
static int ceilDiv(int x, int y)
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение int, которое больше или равно алгебраическому частному.
static long ceilDiv(long x, int y)
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение long, которое больше или равно алгебраическому частному.
static long ceilDiv(long x, long y)
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение long, которое больше или равно алгебраическому частному.
static int ceilDivExact(int x, int y)
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение int, которое больше или равно алгебраическому частному.
static long ceilDivExact(long x, long y)
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение long, которое больше или равно алгебраическому частному.
static int ceilMod(int x, int y)
Возвращает модуль с округлением вверх для аргументов int.
static int ceilMod(long x, int y)
Возвращает модуль с округлением вверх для аргументов long и int.
static long ceilMod(long x, long y)
Возвращает модуль с округлением вверх для аргументов long.
static double clamp(double value, double min, double max)
Ограничивает значение диапазоном от минимума до максимума.
static float clamp(float value, float min, float max)
Ограничивает значение диапазоном от минимума до максимума.
static int clamp(long value, int min, int max)
Ограничивает значение диапазоном от минимума до максимума.
static long clamp(long value, long min, long max)
Ограничивает значение диапазоном от минимума до максимума.
static double copySign(double magnitude, double sign)
Возвращает первый аргумент с плавающей точкой со знаком второго аргумента с плавающей точкой.
static float copySign(float magnitude, float sign)
Возвращает первый аргумент с плавающей точкой со знаком второго аргумента с плавающей точкой.
static double cos(double a)
Возвращает тригонометрический косинус угла.
static double cosh(double x)
Возвращает гиперболический косинус значения double.
static int decrementExact(int a)
Возвращает аргумент, уменьшенный на единицу, и выбрасывает исключение, если результат переполняет int.
static long decrementExact(long a)
Возвращает аргумент, уменьшенный на единицу, и выбрасывает исключение, если результат переполняет long.
static int divideExact(int x, int y)
Возвращает частное аргументов и выбрасывает исключение, если результат переполняет int.
static long divideExact(long x, long y)
Возвращает частное аргументов и выбрасывает исключение, если результат переполняет long.
static double exp(double a)
Возвращает число Эйлера e в степени значения double.
static double expm1(double x)
Возвращает ex −1.
static double floor(double a)
Возвращает наибольшее (ближайшее к положительной бесконечности) значение double, которое меньше или равно аргументу и является математическим целым числом.
static int floorDiv(int x, int y)
Возвращает наибольшее (ближайшее к положительной бесконечности) значение int, которое меньше или равно алгебраическому частному.
static long floorDiv(long x, int y)
Возвращает наибольшее (ближайшее к положительной бесконечности) значение long, которое меньше или равно алгебраическому частному.
static long floorDiv(long x, long y)
Возвращает наибольшее (ближайшее к положительной бесконечности) значение long, которое меньше или равно алгебраическому частному.
static int floorDivExact(int x, int y)
Возвращает наибольшее (ближайшее к положительной бесконечности) значение int, которое меньше или равно алгебраическому частному.
static long floorDivExact(long x, long y)
Возвращает наибольшее (ближайшее к положительной бесконечности) значение long, которое меньше или равно алгебраическому частному.
static int floorMod(int x, int y)
Возвращает модуль с округлением вниз для аргументов int.
static int floorMod(long x, int y)
Возвращает модуль с округлением вниз для аргументов long и int.
static long floorMod(long x, long y)
Возвращает модуль с округлением вниз для аргументов long.
static double fma(double a, double b, double c)
Возвращает результат слитного умножения и сложения трёх аргументов, то есть точное произведение первых двух аргументов, сложенное с третьим аргументом и затем однократно округлённое до ближайшего значения double.
static float fma(float a, float b, float c)
Возвращает результат слитного умножения и сложения трёх аргументов, то есть точное произведение первых двух аргументов, сложенное с третьим аргументом и затем однократно округлённое до ближайшего значения float.
static int getExponent(double d)
Возвращает несмещённый показатель степени, используемый в представлении значения double.
static int getExponent(float f)
Возвращает несмещённый показатель степени, используемый в представлении значения float.
static double hypot(double x, double y)
Возвращает sqrt(x2 +y2) без промежуточного переполнения или потери значимости.
static double IEEEremainder(double f1, double f2)
Вычисляет остаток от деления двух аргументов в соответствии со стандартом IEEE 754.
static int incrementExact(int a)
Возвращает аргумент, увеличенный на единицу, и выбрасывает исключение, если результат переполняет int.
static long incrementExact(long a)
Возвращает аргумент, увеличенный на единицу, и выбрасывает исключение, если результат переполняет long.
static double log(double a)
Возвращает натуральный логарифм (по основанию e) значения double.
static double log10(double a)
Возвращает десятичный логарифм значения double.
static double log1p(double x)
Возвращает натуральный логарифм суммы аргумента и 1.
static double max(double a, double b)
Возвращает большее из двух значений double.
static float max(float a, float b)
Возвращает большее из двух значений float.
static int max(int a, int b)
Возвращает большее из двух значений int.
static long max(long a, long b)
Возвращает большее из двух значений long.
static double min(double a, double b)
Возвращает меньшее из двух значений double.
static float min(float a, float b)
Возвращает меньшее из двух значений float.
static int min(int a, int b)
Возвращает меньшее из двух значений int.
static long min(long a, long b)
Возвращает меньшее из двух значений long.
static int multiplyExact(int x, int y)
Возвращает произведение аргументов и выбрасывает исключение, если результат переполняет int.
static long multiplyExact(long x, int y)
Возвращает произведение аргументов и выбрасывает исключение, если результат переполняет long.
static long multiplyExact(long x, long y)
Возвращает произведение аргументов и выбрасывает исключение, если результат переполняет long.
static long multiplyFull(int x, int y)
Возвращает точное математическое произведение аргументов.
static long multiplyHigh(long x, long y)
Возвращает в виде long 64 старших бита 128-битного произведения двух 64-битных множителей.
static int negateExact(int a)
Возвращает противоположное значение аргумента и выбрасывает исключение, если результат переполняет int.
static long negateExact(long a)
Возвращает противоположное значение аргумента и выбрасывает исключение, если результат переполняет long.
static double nextAfter(double start, double direction)
Возвращает число с плавающей точкой, соседнее с первым аргументом в направлении второго аргумента.
static float nextAfter(float start, double direction)
Возвращает число с плавающей точкой, соседнее с первым аргументом в направлении второго аргумента.
static double nextDown(double d)
Возвращает значение с плавающей точкой, соседнее с d в направлении отрицательной бесконечности.
static float nextDown(float f)
Возвращает значение с плавающей точкой, соседнее с f в направлении отрицательной бесконечности.
static double nextUp(double d)
Возвращает значение с плавающей точкой, соседнее с d в направлении положительной бесконечности.
static float nextUp(float f)
Возвращает значение с плавающей точкой, соседнее с f в направлении положительной бесконечности.
static double pow(double a, double b)
Возвращает первый аргумент, возведённый в степень второго аргумента.
static int powExact(int x, int n)
Возвращает x в степени n и выбрасывает исключение, если результат переполняет int.
static long powExact(long x, int n)
Возвращает x в степени n и выбрасывает исключение, если результат переполняет long.
static double random()
Возвращает значение double с положительным знаком, большее или равное 0.0 и меньшее 1.0.
static double rint(double a)
Возвращает значение double, наиболее близкое к аргументу и являющееся математическим целым числом.
static long round(double a)
Возвращает ближайшее long к аргументу; в случае равного расстояния выполняется округление в сторону положительной бесконечности.
static int round(float a)
Возвращает ближайшее int к аргументу; в случае равного расстояния выполняется округление в сторону положительной бесконечности.
static double scalb(double d, int scaleFactor)
Возвращает d × 2scaleFactor с округлением, как если бы операция выполнялась одним умножением с плавающей точкой и правильным округлением.
static float scalb(float f, int scaleFactor)
Возвращает f × 2scaleFactor с округлением, как если бы операция выполнялась одним умножением с плавающей точкой и правильным округлением.
static double signum(double d)
Возвращает функцию знака аргумента: ноль, если аргумент равен нулю; 1.0, если аргумент больше нуля; −1.0, если аргумент меньше нуля.
static float signum(float f)
Возвращает функцию знака аргумента: ноль, если аргумент равен нулю; 1.0f, если аргумент больше нуля; −1.0f, если аргумент меньше нуля.
static double sin(double a)
Возвращает тригонометрический синус угла.
static double sinh(double x)
Возвращает гиперболический синус значения double.
static double sqrt(double a)
Возвращает правильно округлённый положительный квадратный корень из значения double.
static int subtractExact(int x, int y)
Возвращает разность аргументов и выбрасывает исключение, если результат переполняет int.
static long subtractExact(long x, long y)
Возвращает разность аргументов и выбрасывает исключение, если результат переполняет long.
static double tan(double a)
Возвращает тригонометрический тангенс угла.
static double tanh(double x)
Возвращает гиперболический тангенс значения double.
static double toDegrees(double angrad)
Преобразует угол, измеренный в радианах, в приблизительно эквивалентный угол, измеренный в градусах.
static int toIntExact(long value)
Возвращает значение аргумента long и выбрасывает исключение, если значение переполняет int.
static double toRadians(double angdeg)
Преобразует угол, измеренный в градусах, в приблизительно эквивалентный угол, измеренный в радианах.
static double ulp(double d)
Возвращает размер ulp аргумента.
static float ulp(float f)
Возвращает размер ulp аргумента.
static int unsignedMultiplyExact(int x, int y)
Возвращает произведение беззнаковых аргументов и выбрасывает исключение, если результат переполняет беззнаковый int.
static long unsignedMultiplyExact(long x, int y)
Возвращает произведение беззнаковых аргументов и выбрасывает исключение, если результат переполняет беззнаковый long.
static long unsignedMultiplyExact(long x, long y)
Возвращает произведение беззнаковых аргументов и выбрасывает исключение, если результат переполняет беззнаковый long.
static long unsignedMultiplyHigh(long x, long y)
Возвращает в виде long 64 старших бита беззнакового 128-битного произведения двух беззнаковых 64-битных множителей.
static int unsignedPowExact(int x, int n)
Возвращает беззнаковое x в степени n и выбрасывает исключение, если результат переполняет беззнаковое int.
static long unsignedPowExact(long x, int n)
Возвращает беззнаковое x в степени n и выбрасывает исключение, если результат переполняет беззнаковое long.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

E

public static final double E
Значение double, наиболее близкое к e, основанию натуральных логарифмов.
См. также:
  • Значения константных полей

PI

public static final double PI
Значение double, наиболее близкое к pi (π), отношению длины окружности к её диаметру.
См. также:
  • Значения константных полей

TAU

public static final double TAU
Значение double, наиболее близкое к tau (τ), отношению длины окружности к её радиусу.
Примечание к API:
Значение pi вдвое меньше значения tau; другими словами, tau вдвое больше pi .
Начиная с:
19
См. также:
  • Значения константных полей

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

sin

public static double sin(double a)
Возвращает тригонометрический синус угла. Особые случаи:
  • Если аргумент равен NaN или бесконечности, результат равен NaN.
  • Если аргумент равен нулю, результатом будет ноль с тем же знаком, что и у аргумента.

Вычисленный результат должен отличаться от точного не более чем на 1 ulp. Результаты должны быть полумонотонными.

Параметры:
a — угол в радианах.
Возвращает:
синус аргумента.

cos

public static double cos(double a)
Возвращает тригонометрический косинус угла. Особые случаи:
  • Если аргумент равен NaN или бесконечности, результат равен NaN.
  • Если аргумент равен нулю, результат равен 1.0.

Вычисленный результат должен отличаться от точного не более чем на 1 ulp. Результаты должны быть полумонотонными.

Параметры:
a — угол в радианах.
Возвращает:
косинус аргумента.

tan

public static double tan(double a)
Возвращает тригонометрический тангенс угла. Особые случаи:
  • Если аргумент равен NaN или бесконечности, результат равен NaN.
  • Если аргумент равен нулю, результатом будет ноль с тем же знаком, что и у аргумента.

Вычисленный результат должен отличаться от точного не более чем на 1,25 ulp. Результаты должны быть полумонотонными.

Параметры:
a — угол в радианах.
Возвращает:
тангенс аргумента.

asin

public static double asin(double a)
Возвращает арксинус значения; возвращаемый угол находится в диапазоне от −pi/2 до pi/2. Особые случаи:
  • Если аргумент равен NaN или его абсолютное значение больше 1, результат равен NaN.
  • Если аргумент равен нулю, результатом будет ноль с тем же знаком, что и у аргумента.

Вычисленный результат должен отличаться от точного не более чем на 1 ulp. Результаты должны быть полумонотонными.

Параметры:
a — значение, арксинус которого необходимо вернуть.
Возвращает:
арксинус аргумента.

acos

public static double acos(double a)
Возвращает арккосинус значения; возвращаемый угол находится в диапазоне от 0.0 до pi. Особый случай:
  • Если аргумент равен NaN или его абсолютное значение больше 1, результат равен NaN.
  • Если аргумент равен 1.0, результатом будет положительный ноль.

Вычисленный результат должен отличаться от точного не более чем на 1 ulp. Результаты должны быть полумонотонными.

Параметры:
a — значение, арккосинус которого необходимо вернуть.
Возвращает:
арккосинус аргумента.

atan

public static double atan(double a)
Возвращает арктангенс значения; возвращаемый угол находится в диапазоне от −pi/2 до pi/2. Особые случаи:
  • Если аргумент равен NaN, результат равен NaN.
  • Если аргумент равен нулю, результатом будет ноль с тем же знаком, что и у аргумента.
  • Если аргумент бесконечен, результатом будет ближайшее к pi/2 значение с тем же знаком, что и у входного значения.

Вычисленный результат должен отличаться от точного не более чем на 1 ulp. Результаты должны быть полумонотонными.

Параметры:
a — значение, арктангенс которого необходимо вернуть.
Возвращает:
арктангенс аргумента.

toRadians

public static double toRadians(double angdeg)
Преобразует угол, измеренный в градусах, в приблизительно эквивалентный угол, измеренный в радианах. Преобразование градусов в радианы, как правило, является неточным.
Параметры:
angdeg — угол в градусах
Возвращает:
значение угла angdeg в радианах.
Начиная с:
1.2

toDegrees

public static double toDegrees(double angrad)
Преобразует угол, измеренный в радианах, в приблизительно эквивалентный угол, измеренный в градусах. Преобразование радианов в градусы, как правило, является неточным; пользователям не следует ожидать, что cos(toRadians(90.0)) будет точно равно 0.0.
Параметры:
angrad — угол в радианах
Возвращает:
значение угла angrad в градусах.
Начиная с:
1.2

exp

public static double exp(double a)
Возвращает число Эйлера e в степени double значения. Особые случаи:
  • Если аргумент равен NaN, результат равен NaN.
  • Если аргумент равен положительной бесконечности, результат равен положительной бесконечности.
  • Если аргумент равен отрицательной бесконечности, результатом будет положительный ноль.
  • Если аргумент равен нулю, результат равен 1.0.

Вычисленный результат должен отличаться от точного не более чем на 1 ulp. Результаты должны быть полумонотонными.

Параметры:
a — показатель степени, в которую возводится e.
Возвращает:
значение ea, где e — основание натуральных логарифмов.

log

public static double log(double a)
Возвращает натуральный логарифм (по основанию e) double значения. Особые случаи:
  • Если аргумент равен NaN или меньше нуля, результат равен NaN.
  • Если аргумент равен положительной бесконечности, результат равен положительной бесконечности.
  • Если аргумент равен положительному или отрицательному нулю, результат равен отрицательной бесконечности.
  • Если аргумент равен 1.0, результатом будет положительный ноль.

Вычисленный результат должен отличаться от точного не более чем на 1 ulp. Результаты должны быть полумонотонными.

Параметры:
a — значение
Возвращает:
значение ln a, натуральный логарифм a.

log10

public static double log10(double a)
Возвращает логарифм double значения по основанию 10. Особые случаи:
  • Если аргумент равен NaN или меньше нуля, результат равен NaN.
  • Если аргумент равен положительной бесконечности, результат равен положительной бесконечности.
  • Если аргумент равен положительному или отрицательному нулю, результат равен отрицательной бесконечности.
  • Если аргумент равен 10n для целого n, результат равен n. В частности, если аргумент равен 1.0 (100), результатом будет положительный ноль.

Вычисленный результат должен отличаться от точного не более чем на 1 ulp. Результаты должны быть полумонотонными.

Параметры:
a — значение
Возвращает:
логарифм a по основанию 10.
Начиная с:
1.5

sqrt

public static double sqrt(double a)
Возвращает корректно округлённый положительный квадратный корень из double значения. Особые случаи:
  • Если аргумент равен NaN или меньше нуля, результат равен NaN.
  • Если аргумент равен положительной бесконечности, результат равен положительной бесконечности.
  • Если аргумент равен положительному или отрицательному нулю, результат совпадает с аргументом.
В противном случае результатом будет ближайшее double значение к истинному математическому квадратному корню из значения аргумента.
Примечание к API:
Этот метод соответствует операции squareRoot, определённой в IEEE 754.
Параметры:
a — значение.
Возвращает:
положительный квадратный корень из a. Если аргумент равен NaN или меньше нуля, результат равен NaN.

cbrt

public static double cbrt(double a)
Возвращает кубический корень из double значения. Для положительных конечных x, cbrt(-x) == -cbrt(x); то есть кубический корень из отрицательного значения равен отрицательному кубическому корню из модуля этого значения. Особые случаи:
  • Если аргумент равен NaN, результат равен NaN.
  • Если аргумент бесконечен, результатом будет бесконечность с тем же знаком, что и у аргумента.
  • Если аргумент равен нулю, результатом будет ноль с тем же знаком, что и у аргумента.

Вычисленный результат должен отличаться от точного не более чем на 1 ulp.

Параметры:
a — значение.
Возвращает:
кубический корень из a.
Начиная с:
1.5

IEEEremainder

public static double IEEEremainder(double f1, double f2)
Вычисляет операцию получения остатка от деления двух аргументов в соответствии со стандартом IEEE 754. Математически значение остатка равно f1 - f2 × n, где n — математическое целое число, ближайшее к точному математическому значению частного f1/f2; если два математических целых числа одинаково близки к f1/f2, то n — чётное число. Если остаток равен нулю, его знак совпадает со знаком первого аргумента. Особые случаи:
  • Если один из аргументов равен NaN, первый аргумент бесконечен или второй аргумент равен положительному либо отрицательному нулю, результат равен NaN.
  • Если первый аргумент конечен, а второй аргумент бесконечен, результат совпадает с первым аргументом.
Параметры:
f1 — делимое.
f2 — делитель.
Возвращает:
остаток от деления f1 на f2.

ceil

public static double ceil(double a)
Возвращает наименьшее (ближайшее к отрицательной бесконечности) double значение, которое больше аргумента или равно ему и является математическим целым числом. Особые случаи:
  • Если значение аргумента уже равно математическому целому числу, результат совпадает с аргументом.
  • Если аргумент равен NaN, бесконечности, положительному нулю или отрицательному нулю, результат совпадает с аргументом.
  • Если значение аргумента меньше нуля, но больше -1.0, результатом будет отрицательный ноль.
Обратите внимание, что значение Math.ceil(x) в точности равно значению -Math.floor(-x).
Примечание к API:
Этот метод соответствует операции roundToIntegralTowardPositive, определённой в IEEE 754.
Параметры:
a — значение.
Возвращает:
наименьшее (ближайшее к отрицательной бесконечности) значение с плавающей точкой, которое больше аргумента или равно ему и является математическим целым числом.

floor

public static double floor(double a)
Возвращает наибольшее (ближайшее к положительной бесконечности) double значение, которое меньше аргумента или равно ему и является математическим целым числом. Особые случаи:
  • Если значение аргумента уже равно математическому целому числу, результат совпадает с аргументом.
  • Если аргумент равен NaN, бесконечности, положительному нулю или отрицательному нулю, результат совпадает с аргументом.
Примечание к API:
Этот метод соответствует операции roundToIntegralTowardNegative, определённой в IEEE 754.
Параметры:
a — значение.
Возвращает:
наибольшее (ближайшее к положительной бесконечности) значение с плавающей точкой, которое меньше аргумента или равно ему и является математическим целым числом.

rint

public static double rint(double a)
Возвращает double значение, наиболее близкое к аргументу и являющееся математическим целым числом. Если два double значения, являющиеся математическими целыми числами, одинаково близки, результатом будет чётное целое значение. Особые случаи:
  • Если значение аргумента уже равно математическому целому числу, результат совпадает с аргументом.
  • Если аргумент равен NaN, бесконечности, положительному нулю или отрицательному нулю, результат совпадает с аргументом.
Примечание к API:
Этот метод соответствует операции roundToIntegralTiesToEven, определённой в IEEE 754.
Параметры:
a — значение double.
Возвращает:
ближайшее к a значение с плавающей точкой, являющееся математическим целым числом.

atan2

public static double atan2(double y, double x)
Возвращает угол theta, полученный при преобразовании декартовых координат (x, y) в полярные координаты (r, theta). Этот метод вычисляет фазу theta, вычисляя арктангенс y/x в диапазоне от −pi до pi. Особые случаи:
  • Если один из аргументов равен NaN, результат равен NaN.
  • Если первый аргумент равен положительному нулю, а второй аргумент положителен, или если первый аргумент конечен и положителен, а второй аргумент равен положительной бесконечности, результатом будет положительный ноль.
  • Если первый аргумент равен отрицательному нулю, а второй аргумент положителен, или если первый аргумент конечен и отрицателен, а второй аргумент равен положительной бесконечности, результатом будет отрицательный ноль.
  • Если первый аргумент равен положительному нулю, а второй аргумент отрицателен, или если первый аргумент конечен и положителен, а второй аргумент равен отрицательной бесконечности, результатом будет double значение, ближайшее к pi.
  • Если первый аргумент равен отрицательному нулю, а второй аргумент отрицателен, или если первый аргумент конечен и отрицателен, а второй аргумент равен отрицательной бесконечности, результатом будет double значение, ближайшее к -pi.
  • Если первый аргумент положителен, а второй аргумент равен положительному или отрицательному нулю, или если первый аргумент равен положительной бесконечности, а второй аргумент конечен, результатом будет double значение, ближайшее к pi/2.
  • Если первый аргумент отрицателен, а второй аргумент равен положительному или отрицательному нулю, или если первый аргумент равен отрицательной бесконечности, а второй аргумент конечен, результатом будет double значение, ближайшее к -pi/2.
  • Если оба аргумента равны положительной бесконечности, результатом будет double значение, ближайшее к pi/4.
  • Если первый аргумент равен положительной бесконечности, а второй аргумент равен отрицательной бесконечности, результатом будет double значение, ближайшее к 3*pi/4.
  • Если первый аргумент равен отрицательной бесконечности, а второй аргумент равен положительной бесконечности, результатом будет double значение, ближайшее к -pi/4.
  • Если оба аргумента равны отрицательной бесконечности, результатом будет double значение, ближайшее к -3*pi/4.

Вычисленный результат должен отличаться от точного не более чем на 2 ulp. Результаты должны быть полумонотонными.

Примечание к API:
Для y с положительным знаком и конечного ненулевого x точное математическое значение atan2 равно:
  • Если x > 0, atan(abs(y/x))
  • Если x < 0, π - atan(abs(y/x))
Параметры:
y — ордината
x — абсцисса
Возвращает:
компоненту theta точки (r, theta) в полярных координатах, соответствующей точке (x, y) в декартовых координатах.

pow

public static double pow(double a, double b)
Возвращает значение первого аргумента, возведённого в степень второго аргумента. Особые случаи:
  • Если второй аргумент равен положительному или отрицательному нулю, результат равен 1.0.
  • Если второй аргумент равен 1.0, результат совпадает с первым аргументом.
  • Если второй аргумент равен NaN, результат равен NaN.
  • Если первый аргумент равен NaN, а второй аргумент отличен от нуля, результат равен NaN.
  • Если
    • абсолютное значение первого аргумента больше 1, а второй аргумент равен положительной бесконечности, или
    • абсолютное значение первого аргумента меньше 1, а второй аргумент равен отрицательной бесконечности,
    результатом будет положительная бесконечность.
  • Если
    • абсолютное значение первого аргумента больше 1, а второй аргумент равен отрицательной бесконечности, или
    • абсолютное значение первого аргумента меньше 1, а второй аргумент равен положительной бесконечности,
    результатом будет положительный ноль.
  • Если абсолютное значение первого аргумента равно 1, а второй аргумент бесконечен, результат равен NaN.
  • Если
    • первый аргумент равен положительному нулю, а второй аргумент больше нуля, или
    • первый аргумент равен положительной бесконечности, а второй аргумент меньше нуля,
    результатом будет положительный ноль.
  • Если
    • первый аргумент равен положительному нулю, а второй аргумент меньше нуля, или
    • первый аргумент равен положительной бесконечности, а второй аргумент больше нуля,
    результатом будет положительная бесконечность.
  • Если
    • первый аргумент равен отрицательному нулю, а второй аргумент больше нуля, но не является конечным нечётным целым числом, или
    • первый аргумент равен отрицательной бесконечности, а второй аргумент меньше нуля, но не является конечным нечётным целым числом,
    результатом будет положительный ноль.
  • Если
    • первый аргумент равен отрицательному нулю, а второй аргумент является положительным конечным нечётным целым числом, или
    • первый аргумент равен отрицательной бесконечности, а второй аргумент является отрицательным конечным нечётным целым числом,
    результатом будет отрицательный ноль.
  • Если
    • первый аргумент равен отрицательному нулю, а второй аргумент меньше нуля, но не является конечным нечётным целым числом, или
    • первый аргумент равен отрицательной бесконечности, а второй аргумент больше нуля, но не является конечным нечётным целым числом,
    результатом будет положительная бесконечность.
  • Если
    • первый аргумент равен отрицательному нулю, а второй аргумент является отрицательным конечным нечётным целым числом, или
    • первый аргумент равен отрицательной бесконечности, а второй аргумент является положительным конечным нечётным целым числом,
    результатом будет отрицательная бесконечность.
  • Если первый аргумент конечен и меньше нуля,
    • если второй аргумент является конечным чётным целым числом, результат равен значению абсолютного значения первого аргумента, возведённого в степень второго аргумента;
    • если второй аргумент является конечным нечётным целым числом, результат равен отрицательному значению абсолютного значения первого аргумента, возведённого в степень второго аргумента;
    • если второй аргумент конечен и не является целым числом, результат равен NaN.
  • Если оба аргумента являются целыми числами, результат в точности равен математическому результату возведения первого аргумента в степень второго, если этот результат может быть точно представлен как значение double.

(В приведённых выше описаниях значение с плавающей точкой считается целым тогда и только тогда, когда оно конечно и является неподвижной точкой метода ceil или, что эквивалентно, неподвижной точкой метода floor. Значение является неподвижной точкой метода с одним аргументом тогда и только тогда, когда результат применения метода к этому значению равен самому значению.)

Вычисленный результат должен отличаться от точного не более чем на 1 ulp. Результаты должны быть полумонотонными.

Примечание к API:
Определения особых случаев для этого метода отличаются от определений особых случаев рекомендуемой IEEE 754 операции pow для возведения ±1.0 в бесконечную степень. Этот метод считает такие случаи неопределёнными и задаёт возврат NaN. Спецификация IEEE 754 рассматривает бесконечную степень как большое целое число (большие по модулю числа с плавающей точкой являются целыми числами, а именно чётными целыми числами) и поэтому задаёт возврат 1.0.
Параметры:
a — основание.
b — показатель степени.
Возвращает:
значение ab.

round

public static int round(float a)
Возвращает ближайшее int к аргументу; при равном расстоянии округление выполняется в сторону положительной бесконечности.

Особые случаи:

  • Если аргумент равен NaN, результат равен 0.
  • Если аргумент равен отрицательной бесконечности или его значение меньше либо равно значению Integer.MIN_VALUE, результат равен значению Integer.MIN_VALUE.
  • Если аргумент равен положительной бесконечности или его значение больше либо равно значению Integer.MAX_VALUE, результат равен значению Integer.MAX_VALUE.
Параметры:
a — значение с плавающей точкой, которое необходимо округлить до целого числа.
Возвращает:
значение аргумента, округлённое до ближайшего значения int.
См. также:
  • Integer.MAX_VALUE
  • Integer.MIN_VALUE

round

public static long round(double a)
Возвращает ближайшее long к аргументу; при равном расстоянии округление выполняется в сторону положительной бесконечности.

Особые случаи:

  • Если аргумент равен NaN, результат равен 0.
  • Если аргумент равен отрицательной бесконечности или его значение меньше либо равно значению Long.MIN_VALUE, результат равен значению Long.MIN_VALUE.
  • Если аргумент равен положительной бесконечности или его значение больше либо равно значению Long.MAX_VALUE, результат равен значению Long.MAX_VALUE.
Параметры:
a — значение с плавающей точкой, которое необходимо округлить до long.
Возвращает:
значение аргумента, округлённое до ближайшего значения long.
См. также:
  • Long.MAX_VALUE
  • Long.MIN_VALUE

random

public static double random()
Возвращает значение double со знаком плюс, большее или равное 0.0 и меньшее 1.0. Возвращаемые значения выбираются псевдослучайным образом с (приблизительно) равномерным распределением в этом диапазоне.

При первом вызове этот метод создаёт один новый генератор псевдослучайных чисел, в точности так же, как выражение

new java.util.Random()
В дальнейшем этот новый генератор псевдослучайных чисел используется для всех вызовов этого метода и нигде больше.

Этот метод корректно синхронизирован для безопасного использования несколькими потоками. Однако, если многим потокам требуется генерировать псевдослучайные числа с высокой частотой, каждый поток может уменьшить конкуренцию за ресурсы, используя собственный генератор псевдослучайных чисел.

Примечание к API:
Поскольку наибольшее значение double, меньшее 1.0, равно Math.nextDown(1.0), значение x в замкнутом диапазоне [x1,x2], где x1<=x2, можно определить следующими инструкциями
double f = Math.random()/Math.nextDown(1.0);
double x = x1*(1.0 - f) + x2*f;
Возвращает:
псевдослучайное значение double, большее или равное 0.0 и меньшее 1.0.
См. также:
  • nextDown(double)
  • Random.nextDouble()

addExact

public static int addExact(int x, int y)
Возвращает сумму аргументов, выбрасывая исключение, если результат выходит за пределы типа int.
Параметры:
x — первое значение
y — второе значение
Возвращает:
результат
Выбрасывает:
ArithmeticException — если результат выходит за пределы типа int
Начиная с:
1.8

addExact

public static long addExact(long x, long y)
Возвращает сумму аргументов, выбрасывая исключение, если результат выходит за пределы типа long.
Параметры:
x — первое значение
y — второе значение
Возвращает:
результат
Выбрасывает:
ArithmeticException — если результат выходит за пределы типа long
Начиная с:
1.8

subtractExact

public static int subtractExact(int x, int y)
Возвращает разность аргументов, выбрасывая исключение, если результат выходит за пределы типа int.
Параметры:
x — первое значение
y — значение, вычитаемое из первого
Возвращает:
результат
Выбрасывает:
ArithmeticException — если результат выходит за пределы типа int
Начиная с:
1.8

subtractExact

public static long subtractExact(long x, long y)
Возвращает разность аргументов, выбрасывая исключение, если результат выходит за пределы типа long.
Параметры:
x — первое значение
y — значение, вычитаемое из первого
Возвращает:
результат
Выбрасывает:
ArithmeticException — если результат выходит за пределы типа long
Начиная с:
1.8

multiplyExact

public static int multiplyExact(int x, int y)
Возвращает произведение аргументов; если результат выходит за пределы типа int, выбрасывается исключение.
Параметры:
x - первое значение
y - второе значение
Возвращает:
результат
Выбрасывает:
ArithmeticException - если результат выходит за пределы int
Since:
1.8

multiplyExact

public static long multiplyExact(long x, int y)
Возвращает произведение аргументов; если результат выходит за пределы типа long, выбрасывается исключение.
Параметры:
x - первое значение
y - второе значение
Возвращает:
результат
Выбрасывает:
ArithmeticException - если результат выходит за пределы long
Since:
9

multiplyExact

public static long multiplyExact(long x, long y)
Возвращает произведение аргументов; если результат выходит за пределы типа long, выбрасывается исключение.
Параметры:
x - первое значение
y - второе значение
Возвращает:
результат
Выбрасывает:
ArithmeticException - если результат выходит за пределы long
Since:
1.8

divideExact

public static int divideExact(int x, int y)
Возвращает частное аргументов; если результат выходит за пределы типа int, выбрасывается исключение. В этом методе такое переполнение возникает, если x равно Integer.MIN_VALUE, а y равно -1. Если же вычислить Integer.MIN_VALUE / -1 непосредственно, результатом будет Integer.MIN_VALUE и исключение выброшено не будет.

Если y равно нулю, выбрасывается ArithmeticException (JLS 15.17.2).

Встроенный оператор остатка «%» подходит в качестве дополнения как к этому методу, так и к встроенному оператору деления «/».

Параметры:
x - делимое
y - делитель
Возвращает:
частное x / y
Выбрасывает:
ArithmeticException - если y равно нулю или частное выходит за пределы int
См. Спецификацию языка Java:
15.17.2 Оператор деления /
Since:
18

divideExact

public static long divideExact(long x, long y)
Возвращает частное аргументов; если результат выходит за пределы типа long, выбрасывается исключение. В этом методе такое переполнение возникает, если x равно Long.MIN_VALUE, а y равно -1. Если же вычислить Long.MIN_VALUE / -1 непосредственно, результатом будет Long.MIN_VALUE и исключение выброшено не будет.

Если y равно нулю, выбрасывается ArithmeticException (JLS 15.17.2).

Встроенный оператор остатка «%» подходит в качестве дополнения как к этому методу, так и к встроенному оператору деления «/».

Параметры:
x - делимое
y - делитель
Возвращает:
частное x / y
Выбрасывает:
ArithmeticException - если y равно нулю или частное выходит за пределы long
См. Спецификацию языка Java:
15.17.2 Оператор деления /
Since:
18

floorDivExact

public static int floorDivExact(int x, int y)
Возвращает наибольшее (ближайшее к положительной бесконечности) значение int, которое меньше или равно алгебраическому частному. Этот метод идентичен floorDiv(int,int), за исключением того, что он выбрасывает ArithmeticException, если делимое равно Integer.MIN_VALUE, а делитель равен -1, вместо того чтобы игнорировать целочисленное переполнение и возвращать Integer.MIN_VALUE.

Метод вычисления остатка по модулю с округлением вниз floorMod(int,int) подходит в качестве дополнения как к этому методу, так и к методу floorDiv(int,int).

Примеры см. в разделе floorDiv(int, int).

Параметры:
x - делимое
y - делитель
Возвращает:
наибольшее (ближайшее к положительной бесконечности) значение int, которое меньше или равно алгебраическому частному.
Выбрасывает:
ArithmeticException - если делитель y равен нулю или делимое x равно Integer.MIN_VALUE, а делитель y равен -1.
Since:
18
См. также:
  • floorDiv(int, int)

floorDivExact

public static long floorDivExact(long x, long y)
Возвращает наибольшее (ближайшее к положительной бесконечности) значение long, которое меньше или равно алгебраическому частному. Этот метод идентичен floorDiv(long,long), за исключением того, что он выбрасывает ArithmeticException, если делимое равно Long.MIN_VALUE, а делитель равен -1, вместо того чтобы игнорировать целочисленное переполнение и возвращать Long.MIN_VALUE.

Метод вычисления остатка по модулю с округлением вниз floorMod(long,long) подходит в качестве дополнения как к этому методу, так и к методу floorDiv(long,long).

Примеры см. в разделе floorDiv(int, int).

Параметры:
x - делимое
y - делитель
Возвращает:
наибольшее (ближайшее к положительной бесконечности) значение long, которое меньше или равно алгебраическому частному.
Выбрасывает:
ArithmeticException - если делитель y равен нулю или делимое x равно Long.MIN_VALUE, а делитель y равен -1.
Since:
18
См. также:
  • floorDiv(long,long)

ceilDivExact

public static int ceilDivExact(int x, int y)
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение int, которое больше или равно алгебраическому частному. Этот метод идентичен ceilDiv(int,int), за исключением того, что он выбрасывает ArithmeticException, если делимое равно Integer.MIN_VALUE, а делитель равен -1, вместо того чтобы игнорировать целочисленное переполнение и возвращать Integer.MIN_VALUE.

Метод вычисления остатка по модулю с округлением вверх ceilMod(int,int) подходит в качестве дополнения как к этому методу, так и к методу ceilDiv(int,int).

Примеры см. в разделе ceilDiv(int, int).

Параметры:
x - делимое
y - делитель
Возвращает:
наименьшее (ближайшее к отрицательной бесконечности) значение int, которое больше или равно алгебраическому частному.
Выбрасывает:
ArithmeticException - если делитель y равен нулю или делимое x равно Integer.MIN_VALUE, а делитель y равен -1.
Since:
18
См. также:
  • ceilDiv(int, int)

ceilDivExact

public static long ceilDivExact(long x, long y)
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение long, которое больше или равно алгебраическому частному. Этот метод идентичен ceilDiv(long,long), за исключением того, что он выбрасывает ArithmeticException, если делимое равно Long.MIN_VALUE, а делитель равен -1, вместо того чтобы игнорировать целочисленное переполнение и возвращать Long.MIN_VALUE.

Метод вычисления остатка по модулю с округлением вверх ceilMod(long,long) подходит в качестве дополнения как к этому методу, так и к методу ceilDiv(long,long).

Примеры см. в разделе ceilDiv(int, int).

Параметры:
x - делимое
y - делитель
Возвращает:
наименьшее (ближайшее к отрицательной бесконечности) значение long, которое больше или равно алгебраическому частному.
Выбрасывает:
ArithmeticException - если делитель y равен нулю или делимое x равно Long.MIN_VALUE, а делитель y равен -1.
Since:
18
См. также:
  • ceilDiv(long,long)

incrementExact

public static int incrementExact(int a)
Возвращает аргумент, увеличенный на единицу; если результат выходит за пределы типа int, выбрасывается исключение. Переполнение возникает только для максимального значения.
Параметры:
a - значение, которое нужно увеличить
Возвращает:
результат
Выбрасывает:
ArithmeticException - если результат выходит за пределы int
Since:
1.8

incrementExact

public static long incrementExact(long a)
Возвращает аргумент, увеличенный на единицу; если результат выходит за пределы типа long, выбрасывается исключение. Переполнение возникает только для максимального значения.
Параметры:
a - значение, которое нужно увеличить
Возвращает:
результат
Выбрасывает:
ArithmeticException - если результат выходит за пределы long
Since:
1.8

decrementExact

public static int decrementExact(int a)
Возвращает аргумент, уменьшенный на единицу; если результат выходит за пределы типа int, выбрасывается исключение. Переполнение возникает только для минимального значения.
Параметры:
a - значение, которое нужно уменьшить
Возвращает:
результат
Выбрасывает:
ArithmeticException - если результат выходит за пределы int
Since:
1.8

decrementExact

public static long decrementExact(long a)
Возвращает аргумент, уменьшенный на единицу; если результат выходит за пределы типа long, выбрасывается исключение. Переполнение возникает только для минимального значения.
Параметры:
a - значение, которое нужно уменьшить
Возвращает:
результат
Выбрасывает:
ArithmeticException - если результат выходит за пределы long
Since:
1.8

negateExact

public static int negateExact(int a)
Возвращает противоположное значение аргумента; если результат выходит за пределы типа int, выбрасывается исключение. Переполнение возникает только для минимального значения.
Параметры:
a - значение, которое нужно инвертировать
Возвращает:
результат
Выбрасывает:
ArithmeticException - если результат выходит за пределы int
Since:
1.8

negateExact

public static long negateExact(long a)
Возвращает противоположное значение аргумента; если результат выходит за пределы типа long, выбрасывается исключение. Переполнение возникает только для минимального значения.
Параметры:
a - значение, которое нужно инвертировать
Возвращает:
результат
Выбрасывает:
ArithmeticException - если результат выходит за пределы long
Since:
1.8

toIntExact

public static int toIntExact(long value)
Возвращает значение аргумента long; если значение выходит за пределы типа int, выбрасывается исключение.
Параметры:
value - значение типа long
Возвращает:
аргумент как значение типа int
Выбрасывает:
ArithmeticException - если argument выходит за пределы int
Since:
1.8

multiplyFull

public static long multiplyFull(int x, int y)
Возвращает точное математическое произведение аргументов.
Параметры:
x - первое значение
y - второе значение
Возвращает:
результат
Since:
9

multiplyHigh

public static long multiplyHigh(long x, long y)
Возвращает в виде long наиболее значимые 64 бита 128-битного произведения двух 64-битных множителей.
Параметры:
x - первое значение
y - второе значение
Возвращает:
результат
Since:
9
См. также:
  • unsignedMultiplyHigh(long, long)

unsignedMultiplyHigh

public static long unsignedMultiplyHigh(long x, long y)
Возвращает в виде long наиболее значимые 64 бита беззнакового 128-битного произведения двух беззнаковых 64-битных множителей.
Параметры:
x - первое значение
y - второе значение
Возвращает:
результат
Since:
18
См. также:
  • multiplyHigh(long, long)

floorDiv

public static int floorDiv(int x, int y)
Возвращает наибольшее (ближайшее к положительной бесконечности) значение int, которое меньше или равно алгебраическому частному. Есть один особый случай: если делимое равно Integer.MIN_VALUE, а делитель равен -1, происходит целочисленное переполнение, и результат равен Integer.MIN_VALUE.

При обычном целочисленном делении используется режим округления к нулю (усечение). Этот метод использует режим округления к отрицательной бесконечности (округление вниз). Режим округления вниз дает результаты, отличающиеся от результатов усечения, когда точное частное не является целым числом и отрицательно.

  • Если знаки аргументов совпадают, результаты floorDiv и оператора / одинаковы.
    Например, floorDiv(4, 3) == 1 и (4 / 3) == 1.
  • Если знаки аргументов различаются, floorDiv возвращает наибольшее целое число, меньшее или равное частному, тогда как оператор / возвращает наименьшее целое число, большее или равное частному. Они различаются тогда и только тогда, когда частное не является целым числом.
    Например, floorDiv(-4, 3) == -2, тогда как (-4 / 3) == -1.
Параметры:
x - делимое
y - делитель
Возвращает:
наибольшее (ближайшее к положительной бесконечности) значение int, которое меньше или равно алгебраическому частному.
Выбрасывает:
ArithmeticException - если делитель y равен нулю
Since:
1.8
См. также:
  • floorMod(int, int)
  • floor(double)

floorDiv

public static long floorDiv(long x, int y)
Возвращает наибольшее (ближайшее к положительной бесконечности) значение long, которое меньше или равно алгебраическому частному. Есть один особый случай: если делимое равно Long.MIN_VALUE, а делитель равен -1, происходит целочисленное переполнение, и результат равен Long.MIN_VALUE.

При обычном целочисленном делении используется режим округления к нулю (усечение). Этот метод использует режим округления к отрицательной бесконечности (округление вниз). Режим округления вниз дает результаты, отличающиеся от результатов усечения, когда точный результат не является целым числом и отрицателен.

Примеры см. в разделе floorDiv(int, int).

Параметры:
x - делимое
y - делитель
Возвращает:
наибольшее (ближайшее к положительной бесконечности) значение long, которое меньше или равно алгебраическому частному.
Выбрасывает:
ArithmeticException - если делитель y равен нулю
Since:
9
См. также:
  • floorMod(long, int)
  • floor(double)

floorDiv

public static long floorDiv(long x, long y)
Возвращает наибольшее (ближайшее к положительной бесконечности) значение long, которое меньше или равно алгебраическому частному. Есть один особый случай: если делимое равно Long.MIN_VALUE, а делитель равен -1, происходит целочисленное переполнение, и результат равен Long.MIN_VALUE.

При обычном целочисленном делении используется режим округления к нулю (усечение). Этот метод использует режим округления к отрицательной бесконечности (округление вниз). Режим округления вниз дает результаты, отличающиеся от результатов усечения, когда точный результат не является целым числом и отрицателен.

Примеры см. в разделе floorDiv(int, int).

Параметры:
x - делимое
y - делитель
Возвращает:
наибольшее (ближайшее к положительной бесконечности) значение long, которое меньше или равно алгебраическому частному.
Выбрасывает:
ArithmeticException - если делитель y равен нулю
Since:
1.8
См. также:
  • floorMod(long, long)
  • floor(double)

floorMod

public static int floorMod(int x, int y)
Возвращает остаток от деления аргументов int по модулю с округлением вниз.

Остаток по модулю с округлением вниз равен r = x - (floorDiv(x, y) * y), имеет тот же знак, что и делитель y, либо равен нулю, и находится в диапазоне -abs(y) < r < +abs(y).

Соотношение между floorDiv и floorMod следующее:

  • floorDiv(x, y) * y + floorMod(x, y) == x

Различие значений floorMod и оператора % обусловлено различием между floorDiv и оператором /, как описано в разделе floorDiv(int, int).

Примеры:

  • Независимо от знаков аргументов, floorMod(x, y) равно нулю тогда и только тогда, когда x % y также равно нулю.
  • Если ни floorMod(x, y), ни x % y не равны нулю, они различаются тогда и только тогда, когда знаки аргументов различаются.
    • floorMod(+4, +3) == +1; и (+4 % +3) == +1
    • floorMod(-4, -3) == -1; и (-4 % -3) == -1
    • floorMod(+4, -3) == -2; и (+4 % -3) == +1
    • floorMod(-4, +3) == +2; и (-4 % +3) == -1
Параметры:
x - делимое
y - делитель
Возвращает:
остаток по модулю с округлением вниз x - (floorDiv(x, y) * y)
Выбрасывает:
ArithmeticException - если делитель y равен нулю
Since:
1.8
См. также:
  • floorDiv(int, int)

floorMod

public static int floorMod(long x, int y)
Возвращает остаток от деления аргументов long и int по модулю с округлением вниз.

Остаток по модулю с округлением вниз равен r = x - (floorDiv(x, y) * y), имеет тот же знак, что и делитель y, либо равен нулю, и находится в диапазоне -abs(y) < r < +abs(y).

Соотношение между floorDiv и floorMod следующее:

  • floorDiv(x, y) * y + floorMod(x, y) == x

Примеры см. в разделе floorMod(int, int).

Параметры:
x - делимое
y - делитель
Возвращает:
остаток по модулю с округлением вниз x - (floorDiv(x, y) * y)
Выбрасывает:
ArithmeticException - если делитель y равен нулю
Since:
9
См. также:
  • floorDiv(long, int)

floorMod

public static long floorMod(long x, long y)
Возвращает остаток от деления аргументов long по модулю с округлением вниз.

Остаток по модулю с округлением вниз равен r = x - (floorDiv(x, y) * y), имеет тот же знак, что и делитель y, либо равен нулю, и находится в диапазоне -abs(y) < r < +abs(y).

Соотношение между floorDiv и floorMod следующее:

  • floorDiv(x, y) * y + floorMod(x, y) == x

Примеры см. в разделе floorMod(int, int).

Параметры:
x - делимое
y - делитель
Возвращает:
остаток по модулю с округлением вниз x - (floorDiv(x, y) * y)
Выбрасывает:
ArithmeticException - если делитель y равен нулю
Since:
1.8
См. также:
  • floorDiv(long, long)

ceilDiv

public static int ceilDiv(int x, int y)
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение int, которое больше или равно алгебраическому частному. Есть один особый случай: если делимое равно Integer.MIN_VALUE, а делитель равен -1, происходит целочисленное переполнение, и результат равен Integer.MIN_VALUE.

При обычном целочисленном делении используется режим округления к нулю (усечение). Этот метод использует режим округления к положительной бесконечности (округление вверх). Режим округления вверх дает результаты, отличающиеся от результатов усечения, когда точное частное не является целым числом и положительно.

  • Если знаки аргументов различаются, результаты ceilDiv и оператора / одинаковы.
    Например, ceilDiv(-4, 3) == -1 и (-4 / 3) == -1.
  • Если знаки аргументов совпадают, ceilDiv возвращает наименьшее целое число, большее или равное частному, тогда как оператор / возвращает наибольшее целое число, меньшее или равное частному. Они различаются тогда и только тогда, когда частное не является целым числом.
    Например, ceilDiv(4, 3) == 2, тогда как (4 / 3) == 1.
Параметры:
x - делимое
y - делитель
Возвращает:
наименьшее (ближайшее к отрицательной бесконечности) значение int, которое больше или равно алгебраическому частному.
Выбрасывает:
ArithmeticException - если делитель y равен нулю
Since:
18
См. также:
  • ceilMod(int, int)
  • ceil(double)

ceilDiv

public static long ceilDiv(long x, int y)
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение long, которое больше или равно алгебраическому частному. Есть один особый случай: если делимое равно Long.MIN_VALUE, а делитель равен -1, происходит целочисленное переполнение, и результат равен Long.MIN_VALUE.

При обычном целочисленном делении используется режим округления к нулю (усечение). Этот метод использует режим округления к положительной бесконечности (округление вверх). Режим округления вверх дает результаты, отличающиеся от результатов усечения, когда точный результат не является целым числом и положителен.

Примеры см. в разделе ceilDiv(int, int).

Параметры:
x - делимое
y - делитель
Возвращает:
наименьшее (ближайшее к отрицательной бесконечности) значение long, которое больше или равно алгебраическому частному.
Выбрасывает:
ArithmeticException - если делитель y равен нулю
Since:
18
См. также:
  • ceilMod(int, int)
  • ceil(double)

ceilDiv

public static long ceilDiv(long x, long y)
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение long, которое больше или равно алгебраическому частному. Есть один особый случай: если делимое — Long.MIN_VALUE, а делитель — -1, происходит целочисленное переполнение, и результат равен Long.MIN_VALUE.

При обычном целочисленном делении используется режим округления к нулю (усечение). Эта операция вместо этого использует режим округления к положительной бесконечности (округление вверх). Режим округления вверх даёт результаты, отличающиеся от усечения, когда точный результат не является целым числом и положителен.

Примеры см. в разделе ceilDiv(int, int).

Параметры:
x — делимое
y — делитель
Возвращает:
наименьшее (ближайшее к отрицательной бесконечности) значение long, которое больше или равно алгебраическому частному.
Вызывает исключение:
ArithmeticException — если делитель y равен нулю
Начиная с:
18
См. также:
  • ceilMod(int, int)
  • ceil(double)

ceilMod

public static int ceilMod(int x, int y)
Возвращает модуль с округлением вверх для аргументов int.

Модуль с округлением вверх равен r = x - (ceilDiv(x, y) * y), имеет знак, противоположный знаку делителя y, либо равен нулю, и находится в диапазоне -abs(y) < r < +abs(y).

Связь между ceilDiv и ceilMod такова:

  • ceilDiv(x, y) * y + ceilMod(x, y) == x

Различие значений между ceilMod и оператором % обусловлено различием между ceilDiv и оператором /, как подробно описано в разделе ceilDiv(int, int).

Примеры:

  • Независимо от знаков аргументов, ceilMod(x, y) равно нулю тогда и только тогда, когда x % y также равно нулю.
  • Если ни ceilMod(x, y), ни x % y не равны нулю, их значения различаются тогда и только тогда, когда знаки аргументов совпадают.
    • ceilMod(+4, +3) == -2; и (+4 % +3) == +1
    • ceilMod(-4, -3) == +2; и (-4 % -3) == -1
    • ceilMod(+4, -3) == +1; и (+4 % -3) == +1
    • ceilMod(-4, +3) == -1; и (-4 % +3) == -1
Параметры:
x — делимое
y — делитель
Возвращает:
модуль с округлением вверх x - (ceilDiv(x, y) * y)
Вызывает исключение:
ArithmeticException — если делитель y равен нулю
Начиная с:
18
См. также:
  • ceilDiv(int, int)

ceilMod

public static int ceilMod(long x, int y)
Возвращает модуль с округлением вверх для аргументов long и int.

Модуль с округлением вверх равен r = x - (ceilDiv(x, y) * y), имеет знак, противоположный знаку делителя y, либо равен нулю, и находится в диапазоне -abs(y) < r < +abs(y).

Связь между ceilDiv и ceilMod такова:

  • ceilDiv(x, y) * y + ceilMod(x, y) == x

Примеры см. в разделе ceilMod(int, int).

Параметры:
x — делимое
y — делитель
Возвращает:
модуль с округлением вверх x - (ceilDiv(x, y) * y)
Вызывает исключение:
ArithmeticException — если делитель y равен нулю
Начиная с:
18
См. также:
  • ceilDiv(long, int)

ceilMod

public static long ceilMod(long x, long y)
Возвращает модуль с округлением вверх для аргументов long.

Модуль с округлением вверх равен r = x - (ceilDiv(x, y) * y), имеет знак, противоположный знаку делителя y, либо равен нулю, и находится в диапазоне -abs(y) < r < +abs(y).

Связь между ceilDiv и ceilMod такова:

  • ceilDiv(x, y) * y + ceilMod(x, y) == x

Примеры см. в разделе ceilMod(int, int).

Параметры:
x — делимое
y — делитель
Возвращает:
модуль с округлением вверх x - (ceilDiv(x, y) * y)
Вызывает исключение:
ArithmeticException — если делитель y равен нулю
Начиная с:
18
См. также:
  • ceilDiv(long, long)

abs

public static int abs(int a)
Возвращает абсолютное значение значения типа int. Если аргумент неотрицателен, возвращается сам аргумент. Если аргумент отрицателен, возвращается его противоположное значение.

Обратите внимание: если аргумент равен значению Integer.MIN_VALUE, то есть наименьшему представимому значению типа int, результатом будет то же самое отрицательное значение. В отличие от этого, метод absExact(int) для такого значения вызывает исключение ArithmeticException.

Параметры:
a — аргумент, абсолютное значение которого нужно определить
Возвращает:
абсолютное значение аргумента.
См. также:
  • absExact(int)

absExact

public static int absExact(int a)
Возвращает математическое абсолютное значение значения типа int, если оно точно представимо как int; если результат выходит за пределы положительного диапазона int, вызывает исключение ArithmeticException.

Поскольку диапазон целых чисел в дополнительном коде асимметричен и содержит на одно отрицательное значение больше (JLS 4.2.1), математическое абсолютное значение Integer.MIN_VALUE выходит за пределы положительного диапазона int, поэтому для этого аргумента выбрасывается исключение.

Параметры:
a — аргумент, абсолютное значение которого нужно определить
Возвращает:
абсолютное значение аргумента, если не произошло переполнение
Вызывает исключение:
ArithmeticException — если аргумент равен Integer.MIN_VALUE
Начиная с:
15
См. также:
  • abs(int)

abs

public static long abs(long a)
Возвращает абсолютное значение значения типа long. Если аргумент неотрицателен, возвращается сам аргумент. Если аргумент отрицателен, возвращается его противоположное значение.

Обратите внимание: если аргумент равен значению Long.MIN_VALUE, то есть наименьшему представимому значению типа long, результатом будет то же самое отрицательное значение. В отличие от этого, метод absExact(long) для такого значения вызывает исключение ArithmeticException.

Параметры:
a — аргумент, абсолютное значение которого нужно определить
Возвращает:
абсолютное значение аргумента.
См. также:
  • absExact(long)

absExact

public static long absExact(long a)
Возвращает математическое абсолютное значение значения типа long, если оно точно представимо как long; если результат выходит за пределы положительного диапазона long, вызывает исключение ArithmeticException.

Поскольку диапазон целых чисел в дополнительном коде асимметричен и содержит на одно отрицательное значение больше (JLS 4.2.1), математическое абсолютное значение Long.MIN_VALUE выходит за пределы положительного диапазона long, поэтому для этого аргумента выбрасывается исключение.

Параметры:
a — аргумент, абсолютное значение которого нужно определить
Возвращает:
абсолютное значение аргумента, если не произошло переполнение
Вызывает исключение:
ArithmeticException — если аргумент равен Long.MIN_VALUE
Начиная с:
15
См. также:
  • abs(long)

abs

public static float abs(float a)
Возвращает абсолютное значение значения типа float. Если аргумент неотрицателен, возвращается сам аргумент. Если аргумент отрицателен, возвращается его противоположное значение. Особые случаи:
  • Если аргумент равен положительному или отрицательному нулю, результатом будет положительный ноль.
  • Если аргумент бесконечен, результатом будет положительная бесконечность.
  • Если аргумент — NaN, результат — NaN.
Примечание к API:
Как следует из приведённого выше, одной из допустимых реализаций этого метода является выражение ниже, вычисляющее значение float с той же экспонентой и значащей частью, что и у аргумента, но с гарантированным нулевым битом знака, указывающим на положительное значение:
Float.intBitsToFloat(0x7fffffff & Float.floatToRawIntBits(a))
Параметры:
a — аргумент, абсолютное значение которого нужно определить
Возвращает:
абсолютное значение аргумента.

abs

public static double abs(double a)
Возвращает абсолютное значение значения типа double. Если аргумент неотрицателен, возвращается сам аргумент. Если аргумент отрицателен, возвращается его противоположное значение. Особые случаи:
  • Если аргумент равен положительному или отрицательному нулю, результатом будет положительный ноль.
  • Если аргумент бесконечен, результатом будет положительная бесконечность.
  • Если аргумент — NaN, результат — NaN.
Примечание к API:
Как следует из приведённого выше, одной из допустимых реализаций этого метода является выражение ниже, вычисляющее значение double с той же экспонентой и значащей частью, что и у аргумента, но с гарантированным нулевым битом знака, указывающим на положительное значение:
Double.longBitsToDouble((Double.doubleToRawLongBits(a)<<1)>>>1)
Параметры:
a — аргумент, абсолютное значение которого нужно определить
Возвращает:
абсолютное значение аргумента.

max

public static int max(int a, int b)
Возвращает большее из двух значений типа int. Иными словами, результатом является аргумент, ближайший к значению Integer.MAX_VALUE. Если аргументы имеют одинаковое значение, результатом будет это же значение.
Параметры:
a — аргумент.
b — другой аргумент.
Возвращает:
большее из значений a и b.

max

public static long max(long a, long b)
Возвращает большее из двух значений типа long. Иными словами, результатом является аргумент, ближайший к значению Long.MAX_VALUE. Если аргументы имеют одинаковое значение, результатом будет это же значение.
Параметры:
a — аргумент.
b — другой аргумент.
Возвращает:
большее из значений a и b.

max

public static float max(float a, float b)
Возвращает большее из двух значений типа float. Иными словами, результатом является аргумент, ближайший к положительной бесконечности. Если аргументы имеют одинаковое значение, результатом будет это же значение. Если хотя бы одно из значений — NaN, результатом будет NaN. В отличие от операторов числового сравнения, этот метод считает отрицательный ноль строго меньшим, чем положительный ноль. Если один аргумент равен положительному нулю, а другой — отрицательному, результатом будет положительный ноль.
Примечание к API:
Этот метод соответствует операции нахождения максимума, определённой в IEEE 754.
Параметры:
a — аргумент.
b — другой аргумент.
Возвращает:
большее из значений a и b.

max

public static double max(double a, double b)
Возвращает большее из двух значений типа double. Иными словами, результатом является аргумент, ближайший к положительной бесконечности. Если аргументы имеют одинаковое значение, результатом будет это же значение. Если хотя бы одно из значений — NaN, результатом будет NaN. В отличие от операторов числового сравнения, этот метод считает отрицательный ноль строго меньшим, чем положительный ноль. Если один аргумент равен положительному нулю, а другой — отрицательному, результатом будет положительный ноль.
Примечание к API:
Этот метод соответствует операции нахождения максимума, определённой в IEEE 754.
Параметры:
a — аргумент.
b — другой аргумент.
Возвращает:
большее из значений a и b.

min

public static int min(int a, int b)
Возвращает меньшее из двух значений типа int. Иными словами, результатом является аргумент, ближайший к значению Integer.MIN_VALUE. Если аргументы имеют одинаковое значение, результатом будет это же значение.
Параметры:
a — аргумент.
b — другой аргумент.
Возвращает:
меньшее из значений a и b.

min

public static long min(long a, long b)
Возвращает меньшее из двух значений типа long. Иными словами, результатом является аргумент, ближайший к значению Long.MIN_VALUE. Если аргументы имеют одинаковое значение, результатом будет это же значение.
Параметры:
a — аргумент.
b — другой аргумент.
Возвращает:
меньшее из значений a и b.

min

public static float min(float a, float b)
Возвращает меньшее из двух значений типа float. Иными словами, результатом является значение, ближайшее к отрицательной бесконечности. Если аргументы имеют одинаковое значение, результатом будет это же значение. Если хотя бы одно из значений — NaN, результатом будет NaN. В отличие от операторов числового сравнения, этот метод считает отрицательный ноль строго меньшим, чем положительный ноль. Если один аргумент равен положительному нулю, а другой — отрицательному, результатом будет отрицательный ноль.
Примечание к API:
Этот метод соответствует операции нахождения минимума, определённой в IEEE 754.
Параметры:
a — аргумент.
b — другой аргумент.
Возвращает:
меньшее из значений a и b.

min

public static double min(double a, double b)
Возвращает меньшее из двух значений типа double. Иными словами, результатом является значение, ближайшее к отрицательной бесконечности. Если аргументы имеют одинаковое значение, результатом будет это же значение. Если хотя бы одно из значений — NaN, результатом будет NaN. В отличие от операторов числового сравнения, этот метод считает отрицательный ноль строго меньшим, чем положительный ноль. Если один аргумент равен положительному нулю, а другой — отрицательному, результатом будет отрицательный ноль.
Примечание к API:
Этот метод соответствует операции нахождения минимума, определённой в IEEE 754.
Параметры:
a — аргумент.
b — другой аргумент.
Возвращает:
меньшее из значений a и b.

clamp

public static int clamp(long value, int min, int max)
Ограничивает значение диапазоном от min до max. Если значение меньше min, возвращается min. Если значение больше max, возвращается max. В противном случае возвращается исходное значение.

Исходное значение типа long может не помещаться в тип int, однако границы имеют тип int, поэтому результат всегда помещается в тип int. Это позволяет безопасно преобразовать значение long в int с насыщением с помощью этого метода.

Параметры:
value — значение, которое нужно ограничить
min — минимально допустимое значение
max — максимально допустимое значение
Возвращает:
ограниченное значение, входящее в интервал min..max
Вызывает исключение:
IllegalArgumentException — если min > max
Начиная с:
21

clamp

public static long clamp(long value, long min, long max)
Ограничивает значение диапазоном от min до max. Если значение меньше min, возвращается min. Если значение больше max, возвращается max. В противном случае возвращается исходное значение.
Параметры:
value — значение, которое нужно ограничить
min — минимально допустимое значение
max — максимально допустимое значение
Возвращает:
ограниченное значение, входящее в интервал min..max
Вызывает исключение:
IllegalArgumentException — если min > max
Начиная с:
21

clamp

public static double clamp(double value, double min, double max)
Ограничивает значение диапазоном от min до max. Если значение меньше min, возвращается min. Если значение больше max, возвращается max. В противном случае возвращается исходное значение. Если значение — NaN, результатом также будет NaN.

В отличие от операторов числового сравнения, этот метод считает отрицательный ноль строго меньшим, чем положительный ноль. Например, clamp(-0.0, 0.0, 1.0) возвращает 0.0.

Параметры:
value — значение, которое нужно ограничить
min — минимально допустимое значение
max — максимально допустимое значение
Возвращает:
ограниченное значение, входящее в интервал min..max
Вызывает исключение:
IllegalArgumentException — если один из аргументов min и max является NaN, либо min > max, либо min равен +0.0, а max равен -0.0.
Начиная с:
21

clamp

public static float clamp(float value, float min, float max)
Ограничивает значение диапазоном от min до max. Если значение меньше min, возвращается min. Если значение больше max, возвращается max. В противном случае возвращается исходное значение. Если значение — NaN, результатом также будет NaN.

В отличие от операторов числового сравнения, этот метод считает отрицательный ноль строго меньшим, чем положительный ноль. Например, clamp(-0.0f, 0.0f, 1.0f) возвращает 0.0f.

Параметры:
value — значение, которое нужно ограничить
min — минимально допустимое значение
max — максимально допустимое значение
Возвращает:
ограниченное значение, входящее в интервал min..max
Вызывает исключение:
IllegalArgumentException — если один из аргументов min и max является NaN, либо min > max, либо min равен +0.0f, а max равен -0.0f.
Начиная с:
21

fma

public static double fma(double a, double b, double c)
Возвращает результат слитного умножения с последующим сложением трёх аргументов: точное произведение первых двух аргументов складывается с третьим аргументом, после чего результат однократно округляется до ближайшего значения double. Округление выполняется в режиме округления до ближайшего чётного. В отличие от этого, при вычислении a * b + c как обычного выражения с плавающей точкой возникают две ошибки округления: первая при умножении, вторая при сложении.

Особые случаи:

  • Если любой аргумент — NaN, результат — NaN.
  • Если один из первых двух аргументов бесконечен, а другой равен нулю, результат — NaN.
  • Если точное произведение первых двух аргументов бесконечно (то есть по крайней мере один аргумент бесконечен, а другой не равен ни нулю, ни NaN) и третий аргумент — бесконечность противоположного знака, результат — NaN.

Обратите внимание: fma(a, 1.0, c) возвращает тот же результат, что и (a + c). Однако fma(a, b, +0.0) не всегда возвращает тот же результат, что и (a * b), поскольку fma(-0.0, +0.0, +0.0) является +0.0, тогда как (-0.0 * +0.0) является -0.0; однако fma(a, b, -0.0) эквивалентно (a * b).

Примечание к API:
Этот метод соответствует операции fusedMultiplyAdd, определённой в IEEE 754.
Параметры:
a — значение
b — значение
c — значение
Возвращает:
(a × b + c), вычисленное как при неограниченных диапазоне и точности и однократно округлённое до ближайшего значения double
Начиная с:
9

fma

public static float fma(float a, float b, float c)
Возвращает результат слитного умножения с последующим сложением трёх аргументов: точное произведение первых двух аргументов складывается с третьим аргументом, после чего результат однократно округляется до ближайшего значения float. Округление выполняется в режиме округления до ближайшего чётного. В отличие от этого, при вычислении a * b + c как обычного выражения с плавающей точкой возникают две ошибки округления: первая при умножении, вторая при сложении.

Особые случаи:

  • Если любой аргумент — NaN, результат — NaN.
  • Если один из первых двух аргументов бесконечен, а другой равен нулю, результат — NaN.
  • Если точное произведение первых двух аргументов бесконечно (то есть по крайней мере один аргумент бесконечен, а другой не равен ни нулю, ни NaN) и третий аргумент — бесконечность противоположного знака, результат — NaN.

Обратите внимание: fma(a, 1.0f, c) возвращает тот же результат, что и (a + c). Однако fma(a, b, +0.0f) не всегда возвращает тот же результат, что и (a * b), поскольку fma(-0.0f, +0.0f, +0.0f) является +0.0f, тогда как (-0.0f * +0.0f) является -0.0f; однако fma(a, b, -0.0f) эквивалентно (a * b).

Примечание к API:
Этот метод соответствует операции fusedMultiplyAdd, определённой в IEEE 754.
Параметры:
a — значение
b — значение
c — значение
Возвращает:
(a × b + c), вычисленное как при неограниченных диапазоне и точности и однократно округлённое до ближайшего значения float
Начиная с:
9

ulp

public static double ulp(double d)
Возвращает размер ulp аргумента. ULP (unit in the last place — единица последнего разряда) значения типа double — это положительное расстояние между этим значением с плавающей точкой и следующим по величине значением double. Обратите внимание, что для не-NaN значения x выполняется ulp(-x) == ulp(x).

Особые случаи:

  • Если аргумент — NaN, результат — NaN.
  • Если аргумент равен положительной или отрицательной бесконечности, результат — положительная бесконечность.
  • Если аргумент равен положительному или отрицательному нулю, результат равен Double.MIN_VALUE.
  • Если аргумент равен ±Double.MAX_VALUE, результат равен 2971.
Параметры:
d — значение с плавающей точкой, для которого нужно вернуть ulp
Возвращает:
размер ulp аргумента
Начиная с:
1.5

ulp

public static float ulp(float f)
Возвращает размер ulp аргумента. ULP (unit in the last place — единица последнего разряда) значения типа float — это положительное расстояние между этим значением с плавающей точкой и следующим по величине значением float. Обратите внимание, что для не-NaN значения x выполняется ulp(-x) == ulp(x).

Особые случаи:

  • Если аргумент — NaN, результат — NaN.
  • Если аргумент равен положительной или отрицательной бесконечности, результат — положительная бесконечность.
  • Если аргумент равен положительному или отрицательному нулю, результат равен Float.MIN_VALUE.
  • Если аргумент равен ±Float.MAX_VALUE, результат равен 2104.
Параметры:
f — значение с плавающей точкой, для которого нужно вернуть ulp
Возвращает:
размер ulp аргумента
Начиная с:
1.5

signum

public static double signum(double d)
Возвращает значение функции знака аргумента: ноль, если аргумент равен нулю; 1.0, если аргумент больше нуля; -1.0, если аргумент меньше нуля.

Особые случаи:

  • Если аргумент — NaN, результат — NaN.
  • Если аргумент равен положительному или отрицательному нулю, результат совпадает с аргументом.
Параметры:
d — значение с плавающей точкой, для которого нужно вернуть функцию знака
Возвращает:
значение функции знака аргумента
Начиная с:
1.5

signum

public static float signum(float f)
Возвращает значение функции знака аргумента: ноль, если аргумент равен нулю; 1.0f, если аргумент больше нуля; -1.0f, если аргумент меньше нуля.

Особые случаи:

  • Если аргумент — NaN, результат — NaN.
  • Если аргумент равен положительному или отрицательному нулю, результат совпадает с аргументом.
Параметры:
f — значение с плавающей точкой, для которого нужно вернуть функцию знака
Возвращает:
значение функции знака аргумента
Начиная с:
1.5

sinh

public static double sinh(double x)
Возвращает гиперболический синус значения double. Гиперболический синус x определяется как (ex − e−x)/2, где e — число Эйлера.

Особые случаи:

  • Если аргумент — NaN, результатом будет NaN.
  • Если аргумент бесконечен, результатом будет бесконечность с тем же знаком, что и у аргумента.
  • Если аргумент равен нулю, результатом будет ноль с тем же знаком, что и у аргумента.

Вычисленный результат должен отличаться от точного не более чем на 2,5 ulp.

Параметры:
x — число, гиперболический синус которого необходимо вернуть.
Возвращает:
Гиперболический синус x.
С версии:
1.5

cosh

public static double cosh(double x)
Возвращает гиперболический косинус значения double. Гиперболический косинус x определяется как (ex + e−x)/2, где e — число Эйлера.

Особые случаи:

  • Если аргумент — NaN, результатом будет NaN.
  • Если аргумент бесконечен, результатом будет положительная бесконечность.
  • Если аргумент равен нулю, результатом будет 1.0.

Вычисленный результат должен отличаться от точного не более чем на 2,5 ulp.

Параметры:
x — число, гиперболический косинус которого необходимо вернуть.
Возвращает:
Гиперболический косинус x.
С версии:
1.5

tanh

public static double tanh(double x)
Возвращает гиперболический тангенс значения double. Гиперболический тангенс x определяется как (ex − e−x)/(ex + e−x), то есть sinh(x)/cosh(x). Обратите внимание, что абсолютное значение точного tanh всегда меньше 1.

Особые случаи:

  • Если аргумент — NaN, результатом будет NaN.
  • Если аргумент равен нулю, результатом будет ноль с тем же знаком, что и у аргумента.
  • Если аргумент равен положительной бесконечности, результатом будет +1.0.
  • Если аргумент равен отрицательной бесконечности, результатом будет -1.0.

Вычисленный результат должен отличаться от точного не более чем на 2,5 ulp. Результат tanh для любого конечного входного значения должен иметь абсолютное значение, меньшее или равное 1. Обратите внимание: как только точный результат tanh окажется ближе чем на 1/2 ulp к предельному значению ±1, должно возвращаться правильно знаковое значение ±1.0.

Параметры:
x — число, гиперболический тангенс которого необходимо вернуть.
Возвращает:
Гиперболический тангенс x.
С версии:
1.5

hypot

public static double hypot(double x, double y)
Возвращает sqrt(x2 +y2) без промежуточного переполнения или потери значимости.

Особые случаи:

  • Если хотя бы один аргумент бесконечен, результатом будет положительная бесконечность.
  • Если хотя бы один аргумент равен NaN и ни один аргумент не бесконечен, результатом будет NaN.
  • Если оба аргумента равны нулю, результатом будет положительный ноль.

Вычисленный результат должен отличаться от точного не более чем на 1,5 ulp. Если один параметр зафиксирован, результаты должны быть полу монотонными по другому параметру.

Параметры:
x — значение
y — значение
Возвращает:
sqrt(x2 +y2) без промежуточного переполнения или потери значимости
С версии:
1.5

expm1

public static double expm1(double x)
Возвращает ex −1. Обратите внимание, что для значений x, близких к 0, точная сумма expm1(x) + 1 гораздо ближе к истинному значению ex, чем exp(x).

Особые случаи:

  • Если аргумент — NaN, результатом будет NaN.
  • Если аргумент равен положительной бесконечности, результатом будет положительная бесконечность.
  • Если аргумент равен отрицательной бесконечности, результатом будет -1.0.
  • Если аргумент равен нулю, результатом будет ноль с тем же знаком, что и у аргумента.

Вычисленный результат должен отличаться от точного не более чем на 1 ulp. Результаты должны быть полумонотонными. Результат expm1 для любого конечного входного значения должен быть больше или равен -1.0. Обратите внимание: как только точный результат ex - 1 окажется ближе чем на 1/2 ulp к предельному значению -1, должно возвращаться -1.0.

Параметры:
x — показатель степени, в которую возводится e при вычислении ex −1.
Возвращает:
значение ex - 1.
С версии:
1.5

log1p

public static double log1p(double x)
Возвращает натуральный логарифм суммы аргумента и 1. Обратите внимание, что для малых значений x результат log1p(x) гораздо ближе к истинному значению ln(1 + x), чем вычисление с плавающей точкой log(1.0+x).

Особые случаи:

  • Если аргумент равен NaN или меньше -1, результатом будет NaN.
  • Если аргумент равен положительной бесконечности, результатом будет положительная бесконечность.
  • Если аргумент равен отрицательной единице, результатом будет отрицательная бесконечность.
  • Если аргумент равен нулю, результатом будет ноль с тем же знаком, что и у аргумента.

Вычисленный результат должен отличаться от точного не более чем на 1 ulp. Результаты должны быть полумонотонными.

Параметры:
x — значение
Возвращает:
значение ln(x + 1), натуральный логарифм x + 1
С версии:
1.5

copySign

public static double copySign(double magnitude, double sign)
Возвращает первый аргумент с плавающей точкой со знаком второго аргумента с плавающей точкой. Обратите внимание: в отличие от метода StrictMath.copySign, этот метод не требует, чтобы аргументы sign NaN трактовались как положительные значения; реализациям разрешается трактовать одни аргументы NaN как положительные, а другие — как отрицательные, чтобы повысить производительность.
Примечание API:
Этот метод соответствует операции copySign, определённой в IEEE 754.
Параметры:
magnitude — параметр, задающий модуль результата
sign — параметр, задающий знак результата
Возвращает:
значение с модулем magnitude и знаком sign.
С версии:
1.6

copySign

public static float copySign(float magnitude, float sign)
Возвращает первый аргумент с плавающей точкой со знаком второго аргумента с плавающей точкой. Обратите внимание: в отличие от метода StrictMath.copySign, этот метод не требует, чтобы аргументы sign NaN трактовались как положительные значения; реализациям разрешается трактовать одни аргументы NaN как положительные, а другие — как отрицательные, чтобы повысить производительность.
Примечание API:
Этот метод соответствует операции copySign, определённой в IEEE 754.
Параметры:
magnitude — параметр, задающий модуль результата
sign — параметр, задающий знак результата
Возвращает:
значение с модулем magnitude и знаком sign.
С версии:
1.6

getExponent

public static int getExponent(float f)
Возвращает смещённый показатель степени, используемый в представлении значения float. Особые случаи:
  • Если аргумент равен NaN или бесконечен, результатом будет Float.MAX_EXPONENT + 1.
  • Если аргумент равен нулю или является субнормальным, результатом будет Float.MIN_EXPONENT - 1.
Примечание API:
Этот метод аналогичен операции logB, определённой в IEEE 754, но возвращает другое значение для субнормальных аргументов.
Параметры:
f — значение float
Возвращает:
несмещённый показатель степени аргумента
С версии:
1.6

getExponent

public static int getExponent(double d)
Возвращает смещённый показатель степени, используемый в представлении значения double. Особые случаи:
  • Если аргумент равен NaN или бесконечен, результатом будет Double.MAX_EXPONENT + 1.
  • Если аргумент равен нулю или является субнормальным, результатом будет Double.MIN_EXPONENT - 1.
Примечание API:
Этот метод аналогичен операции logB, определённой в IEEE 754, но возвращает другое значение для субнормальных аргументов.
Параметры:
d — значение double
Возвращает:
несмещённый показатель степени аргумента
С версии:
1.6

nextAfter

public static double nextAfter(double start, double direction)
Возвращает число с плавающей точкой, смежное с первым аргументом в направлении второго аргумента. Если оба аргумента сравниваются как равные, возвращается второй аргумент.

Особые случаи:

  • Если хотя бы один аргумент является NaN, возвращается NaN.
  • Если оба аргумента — знаковые нули, direction возвращается без изменений (как следует из требования возвращать второй аргумент, если аргументы сравниваются как равные).
  • Если start равен ±Double.MIN_VALUE, а direction имеет значение, при котором результат должен иметь меньший модуль, возвращается ноль с тем же знаком, что и start.
  • Если start бесконечен, а direction имеет значение, при котором результат должен иметь меньший модуль, возвращается Double.MAX_VALUE с тем же знаком, что и start.
  • Если start равен ± Double.MAX_VALUE, а direction имеет значение, при котором результат должен иметь больший модуль, возвращается бесконечность с тем же знаком, что и start.
Параметры:
start — начальное значение с плавающей точкой
direction — значение, указывающее, какое из соседних значений start или start следует вернуть
Возвращает:
Число с плавающей точкой, смежное с start в направлении direction.
С версии:
1.6

nextAfter

public static float nextAfter(float start, double direction)
Возвращает число с плавающей точкой, смежное с первым аргументом в направлении второго аргумента. Если оба аргумента сравниваются как равные, возвращается значение, эквивалентное второму аргументу.

Особые случаи:

  • Если хотя бы один аргумент является NaN, возвращается NaN.
  • Если оба аргумента — знаковые нули, возвращается значение, эквивалентное direction.
  • Если start равен ±Float.MIN_VALUE, а direction имеет значение, при котором результат должен иметь меньший модуль, возвращается ноль с тем же знаком, что и start.
  • Если start бесконечен, а direction имеет значение, при котором результат должен иметь меньший модуль, возвращается Float.MAX_VALUE с тем же знаком, что и start.
  • Если start равен ± Float.MAX_VALUE, а direction имеет значение, при котором результат должен иметь больший модуль, возвращается бесконечность с тем же знаком, что и start.
Параметры:
start — начальное значение с плавающей точкой
direction — значение, указывающее, какое из соседних значений start или start следует вернуть
Возвращает:
Число с плавающей точкой, смежное с start в направлении direction.
С версии:
1.6

nextUp

public static double nextUp(double d)
Возвращает значение с плавающей точкой, смежное с d в направлении положительной бесконечности. Этот метод семантически эквивалентен nextAfter(d, Double.POSITIVE_INFINITY); однако реализация nextUp может работать быстрее эквивалентного вызова nextAfter.

Особые случаи:

  • Если аргумент — NaN, результатом будет NaN.
  • Если аргумент равен положительной бесконечности, результатом будет положительная бесконечность.
  • Если аргумент равен нулю, результатом будет Double.MIN_VALUE
Примечание API:
Этот метод соответствует операции nextUp, определённой в IEEE 754.
Параметры:
d — начальное значение с плавающей точкой
Возвращает:
Смежное значение с плавающей точкой, ближайшее к положительной бесконечности.
С версии:
1.6

nextUp

public static float nextUp(float f)
Возвращает значение с плавающей точкой, смежное с f в направлении положительной бесконечности. Этот метод семантически эквивалентен nextAfter(f, Float.POSITIVE_INFINITY); однако реализация nextUp может работать быстрее эквивалентного вызова nextAfter.

Особые случаи:

  • Если аргумент — NaN, результатом будет NaN.
  • Если аргумент равен положительной бесконечности, результатом будет положительная бесконечность.
  • Если аргумент равен нулю, результатом будет Float.MIN_VALUE
Примечание API:
Этот метод соответствует операции nextUp, определённой в IEEE 754.
Параметры:
f — начальное значение с плавающей точкой
Возвращает:
Смежное значение с плавающей точкой, ближайшее к положительной бесконечности.
С версии:
1.6

nextDown

public static double nextDown(double d)
Возвращает значение с плавающей точкой, смежное с d в направлении отрицательной бесконечности. Этот метод семантически эквивалентен nextAfter(d, Double.NEGATIVE_INFINITY); однако реализация nextDown может работать быстрее эквивалентного вызова nextAfter.

Особые случаи:

  • Если аргумент — NaN, результатом будет NaN.
  • Если аргумент равен отрицательной бесконечности, результатом будет отрицательная бесконечность.
  • Если аргумент равен нулю, результатом будет -Double.MIN_VALUE
Примечание API:
Этот метод соответствует операции nextDown, определённой в IEEE 754.
Параметры:
d — начальное значение с плавающей точкой
Возвращает:
Смежное значение с плавающей точкой, ближайшее к отрицательной бесконечности.
С версии:
1.8

nextDown

public static float nextDown(float f)
Возвращает значение с плавающей точкой, смежное с f в направлении отрицательной бесконечности. Этот метод семантически эквивалентен nextAfter(f, Float.NEGATIVE_INFINITY); однако реализация nextDown может работать быстрее эквивалентного вызова nextAfter.

Особые случаи:

  • Если аргумент — NaN, результатом будет NaN.
  • Если аргумент равен отрицательной бесконечности, результатом будет отрицательная бесконечность.
  • Если аргумент равен нулю, результатом будет -Float.MIN_VALUE
Примечание API:
Этот метод соответствует операции nextDown, определённой в IEEE 754.
Параметры:
f — начальное значение с плавающей точкой
Возвращает:
Смежное значение с плавающей точкой, ближайшее к отрицательной бесконечности.
С версии:
1.8

scalb

public static double scalb(double d, int scaleFactor)
Возвращает d × 2scaleFactor, округлённое так, как если бы вычисление выполнялось одним умножением с плавающей точкой и правильным округлением. Если показатель степени результата находится между Double.MIN_EXPONENT и Double.MAX_EXPONENT, результат вычисляется точно. Если показатель степени результата превышает Double.MAX_EXPONENT, возвращается бесконечность. Обратите внимание: если результат субнормальный, точность может быть потеряна; то есть если scalb(x, n) субнормально, scalb(scalb(x, n), -n) может не равняться x. Если результат не является NaN, он имеет тот же знак, что и d.

Особые случаи:

  • Если первый аргумент — NaN, возвращается NaN.
  • Если первый аргумент бесконечен, возвращается бесконечность с тем же знаком.
  • Если первый аргумент равен нулю, возвращается ноль с тем же знаком.
Примечание API:
Этот метод соответствует операции scaleB, определённой в IEEE 754.
Параметры:
d — число, масштабируемое степенью двойки.
scaleFactor — степень двойки, используемая для масштабирования d
Возвращает:
d × 2scaleFactor
С версии:
1.6

scalb

public static float scalb(float f, int scaleFactor)
Возвращает f × 2scaleFactor, округлённое так, как если бы вычисление выполнялось одним умножением с плавающей точкой и правильным округлением. Если показатель степени результата находится между Float.MIN_EXPONENT и Float.MAX_EXPONENT, результат вычисляется точно. Если показатель степени результата превышает Float.MAX_EXPONENT, возвращается бесконечность. Обратите внимание: если результат субнормальный, точность может быть потеряна; то есть если scalb(x, n) субнормально, scalb(scalb(x, n), -n) может не равняться x. Если результат не является NaN, он имеет тот же знак, что и f.

Особые случаи:

  • Если первый аргумент — NaN, возвращается NaN.
  • Если первый аргумент бесконечен, возвращается бесконечность с тем же знаком.
  • Если первый аргумент равен нулю, возвращается ноль с тем же знаком.
Примечание API:
Этот метод соответствует операции scaleB, определённой в IEEE 754.
Параметры:
f — число, масштабируемое степенью двойки.
scaleFactor — степень двойки, используемая для масштабирования f
Возвращает:
f × 2scaleFactor
С версии:
1.6

unsignedMultiplyExact

public static int unsignedMultiplyExact(int x, int y)
Возвращает произведение беззнаковых аргументов; если результат переполняет беззнаковое значение типа int, выбрасывается исключение.
Параметры:
x — первое беззнаковое значение
y — второе беззнаковое значение
Возвращает:
результат
Выбрасывает:
ArithmeticException — если результат переполняет беззнаковое значение типа int
С версии:
25

unsignedMultiplyExact

public static long unsignedMultiplyExact(long x, int y)
Возвращает произведение беззнаковых аргументов; если результат переполняет беззнаковое значение типа long, выбрасывается исключение.
Параметры:
x — первое беззнаковое значение
y — второе беззнаковое значение
Возвращает:
результат
Выбрасывает:
ArithmeticException — если результат переполняет беззнаковое значение типа long
С версии:
25

unsignedMultiplyExact

public static long unsignedMultiplyExact(long x, long y)
Возвращает произведение беззнаковых аргументов; если результат переполняет беззнаковое значение типа long, выбрасывается исключение.
Параметры:
x — первое беззнаковое значение
y — второе беззнаковое значение
Возвращает:
результат
Выбрасывает:
ArithmeticException — если результат переполняет беззнаковое значение типа long
С версии:
25

powExact

public static int powExact(int x, int n)
Возвращает x в степени n; если результат переполняет int, выбрасывается исключение. Если n равно 0, возвращаемое значение равно 1.
Параметры:
x — основание.
n — показатель степени.
Возвращает:
x в степени n.
Выбрасывает:
ArithmeticException — если n отрицательно или результат переполняет int.
С версии:
25

unsignedPowExact

public static int unsignedPowExact(int x, int n)
Возвращает беззнаковое x в степени n; если результат переполняет беззнаковое int, выбрасывается исключение. Если n равно 0, возвращаемое значение равно 1.
Параметры:
x — беззнаковое основание.
n — показатель степени.
Возвращает:
x в степени n.
Выбрасывает:
ArithmeticException — если n отрицательно или результат переполняет беззнаковое значение типа int.
С версии:
25

powExact

public static long powExact(long x, int n)
Возвращает x в степени n; если результат переполняет long, выбрасывается исключение. Если n равно 0, возвращаемое значение равно 1.
Параметры:
x — основание.
n — показатель степени.
Возвращает:
x в степени n.
Выбрасывает:
ArithmeticException — если n отрицательно или результат переполняет long.
С версии:
25

unsignedPowExact

public static long unsignedPowExact(long x, int n)
Возвращает беззнаковое x в степени n; если результат переполняет беззнаковое long, выбрасывается исключение. Если n равно 0, возвращаемое значение равно 1.
Параметры:
x — беззнаковое основание.
n — показатель степени.
Возвращает:
x в степени n.
Выбрасывает:
ArithmeticException — если n отрицательно или результат переполняет беззнаковое значение типа long.
С версии:
25

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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/Math.html

Spec-Zone.ru

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