Класс 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
- Внешние спецификации
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final double |
E |
Значение double, наиболее близкое к e — основанию натуральных логарифмов. |
static final double |
PI |
Значение double, наиболее близкое к pi (π) — отношению длины окружности к её диаметру. |
static final double |
TAU |
Значение double, наиболее близкое к tau (τ) — отношению длины окружности к её радиусу. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static double |
abs |
Возвращает абсолютное значение значения double. |
static float |
abs |
Возвращает абсолютное значение значения float. |
static int |
abs |
Возвращает абсолютное значение значения int. |
static long |
abs |
Возвращает абсолютное значение значения long. |
static int |
absExact |
Возвращает математическое абсолютное значение значения int, если оно точно представимо как int, и выбрасывает ArithmeticException, если результат выходит за положительный диапазон int. |
static long |
absExact |
Возвращает математическое абсолютное значение значения long, если оно точно представимо как long, и выбрасывает ArithmeticException, если результат выходит за положительный диапазон long. |
static double |
acos |
Возвращает арккосинус значения; возвращаемый угол находится в диапазоне от 0,0 до pi. |
static int |
addExact |
Возвращает сумму аргументов и выбрасывает исключение, если результат переполняет int. |
static long |
addExact |
Возвращает сумму аргументов и выбрасывает исключение, если результат переполняет long. |
static double |
asin |
Возвращает арксинус значения; возвращаемый угол находится в диапазоне от −pi/2 до pi/2. |
static double |
atan |
Возвращает арктангенс значения; возвращаемый угол находится в диапазоне от −pi/2 до pi/2. |
static double |
atan2 |
Возвращает угол theta, полученный при преобразовании декартовых координат ( x, y) в полярные координаты (r, theta). |
static double |
cbrt |
Возвращает кубический корень из значения double. |
static double |
ceil |
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение double, которое больше или равно аргументу и является математическим целым числом. |
static int |
ceilDiv |
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение int, которое больше или равно алгебраическому частному. |
static long |
ceilDiv |
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение long, которое больше или равно алгебраическому частному. |
static long |
ceilDiv |
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение long, которое больше или равно алгебраическому частному. |
static int |
ceilDivExact |
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение int, которое больше или равно алгебраическому частному. |
static long |
ceilDivExact |
Возвращает наименьшее (ближайшее к отрицательной бесконечности) значение long, которое больше или равно алгебраическому частному. |
static int |
ceilMod |
Возвращает модуль с округлением вверх для аргументов int. |
static int |
ceilMod |
Возвращает модуль с округлением вверх для аргументов long и int. |
static long |
ceilMod |
Возвращает модуль с округлением вверх для аргументов long. |
static double |
clamp |
Ограничивает значение диапазоном от минимума до максимума. |
static float |
clamp |
Ограничивает значение диапазоном от минимума до максимума. |
static int |
clamp |
Ограничивает значение диапазоном от минимума до максимума. |
static long |
clamp |
Ограничивает значение диапазоном от минимума до максимума. |
static double |
copySign |
Возвращает первый аргумент с плавающей точкой со знаком второго аргумента с плавающей точкой. |
static float |
copySign |
Возвращает первый аргумент с плавающей точкой со знаком второго аргумента с плавающей точкой. |
static double |
cos |
Возвращает тригонометрический косинус угла. |
static double |
cosh |
Возвращает гиперболический косинус значения double. |
static int |
decrementExact |
Возвращает аргумент, уменьшенный на единицу, и выбрасывает исключение, если результат переполняет int. |
static long |
decrementExact |
Возвращает аргумент, уменьшенный на единицу, и выбрасывает исключение, если результат переполняет long. |
static int |
divideExact |
Возвращает частное аргументов и выбрасывает исключение, если результат переполняет int. |
static long |
divideExact |
Возвращает частное аргументов и выбрасывает исключение, если результат переполняет long. |
static double |
exp |
Возвращает число Эйлера e в степени значения double. |
static double |
expm1 |
Возвращает ex −1. |
static double |
floor |
Возвращает наибольшее (ближайшее к положительной бесконечности) значение double, которое меньше или равно аргументу и является математическим целым числом. |
static int |
floorDiv |
Возвращает наибольшее (ближайшее к положительной бесконечности) значение int, которое меньше или равно алгебраическому частному. |
static long |
floorDiv |
Возвращает наибольшее (ближайшее к положительной бесконечности) значение long, которое меньше или равно алгебраическому частному. |
static long |
floorDiv |
Возвращает наибольшее (ближайшее к положительной бесконечности) значение long, которое меньше или равно алгебраическому частному. |
static int |
floorDivExact |
Возвращает наибольшее (ближайшее к положительной бесконечности) значение int, которое меньше или равно алгебраическому частному. |
static long |
floorDivExact |
Возвращает наибольшее (ближайшее к положительной бесконечности) значение long, которое меньше или равно алгебраическому частному. |
static int |
floorMod |
Возвращает модуль с округлением вниз для аргументов int. |
static int |
floorMod |
Возвращает модуль с округлением вниз для аргументов long и int. |
static long |
floorMod |
Возвращает модуль с округлением вниз для аргументов long. |
static double |
fma |
Возвращает результат слитного умножения и сложения трёх аргументов, то есть точное произведение первых двух аргументов, сложенное с третьим аргументом и затем однократно округлённое до ближайшего значения double. |
static float |
fma |
Возвращает результат слитного умножения и сложения трёх аргументов, то есть точное произведение первых двух аргументов, сложенное с третьим аргументом и затем однократно округлённое до ближайшего значения float. |
static int |
getExponent |
Возвращает несмещённый показатель степени, используемый в представлении значения double. |
static int |
getExponent |
Возвращает несмещённый показатель степени, используемый в представлении значения float. |
static double |
hypot |
Возвращает sqrt(x2 +y2) без промежуточного переполнения или потери значимости. |
static double |
IEEEremainder |
Вычисляет остаток от деления двух аргументов в соответствии со стандартом IEEE 754. |
static int |
incrementExact |
Возвращает аргумент, увеличенный на единицу, и выбрасывает исключение, если результат переполняет int. |
static long |
incrementExact |
Возвращает аргумент, увеличенный на единицу, и выбрасывает исключение, если результат переполняет long. |
static double |
log |
Возвращает натуральный логарифм (по основанию e) значения double. |
static double |
log10 |
Возвращает десятичный логарифм значения double. |
static double |
log1p |
Возвращает натуральный логарифм суммы аргумента и 1. |
static double |
max |
Возвращает большее из двух значений double. |
static float |
max |
Возвращает большее из двух значений float. |
static int |
max |
Возвращает большее из двух значений int. |
static long |
max |
Возвращает большее из двух значений long. |
static double |
min |
Возвращает меньшее из двух значений double. |
static float |
min |
Возвращает меньшее из двух значений float. |
static int |
min |
Возвращает меньшее из двух значений int. |
static long |
min |
Возвращает меньшее из двух значений long. |
static int |
multiplyExact |
Возвращает произведение аргументов и выбрасывает исключение, если результат переполняет int. |
static long |
multiplyExact |
Возвращает произведение аргументов и выбрасывает исключение, если результат переполняет long. |
static long |
multiplyExact |
Возвращает произведение аргументов и выбрасывает исключение, если результат переполняет long. |
static long |
multiplyFull |
Возвращает точное математическое произведение аргументов. |
static long |
multiplyHigh |
Возвращает в виде long 64 старших бита 128-битного произведения двух 64-битных множителей. |
static int |
negateExact |
Возвращает противоположное значение аргумента и выбрасывает исключение, если результат переполняет int. |
static long |
negateExact |
Возвращает противоположное значение аргумента и выбрасывает исключение, если результат переполняет long. |
static double |
nextAfter |
Возвращает число с плавающей точкой, соседнее с первым аргументом в направлении второго аргумента. |
static float |
nextAfter |
Возвращает число с плавающей точкой, соседнее с первым аргументом в направлении второго аргумента. |
static double |
nextDown |
Возвращает значение с плавающей точкой, соседнее с d в направлении отрицательной бесконечности. |
static float |
nextDown |
Возвращает значение с плавающей точкой, соседнее с f в направлении отрицательной бесконечности. |
static double |
nextUp |
Возвращает значение с плавающей точкой, соседнее с d в направлении положительной бесконечности. |
static float |
nextUp |
Возвращает значение с плавающей точкой, соседнее с f в направлении положительной бесконечности. |
static double |
pow |
Возвращает первый аргумент, возведённый в степень второго аргумента. |
static int |
powExact |
Возвращает x в степени n и выбрасывает исключение, если результат переполняет int. |
static long |
powExact |
Возвращает x в степени n и выбрасывает исключение, если результат переполняет long. |
static double |
random() |
Возвращает значение double с положительным знаком, большее или равное 0.0 и меньшее 1.0. |
static double |
rint |
Возвращает значение double, наиболее близкое к аргументу и являющееся математическим целым числом. |
static long |
round |
Возвращает ближайшее long к аргументу; в случае равного расстояния выполняется округление в сторону положительной бесконечности. |
static int |
round |
Возвращает ближайшее int к аргументу; в случае равного расстояния выполняется округление в сторону положительной бесконечности. |
static double |
scalb |
Возвращает d × 2scaleFactor с округлением, как если бы операция выполнялась одним умножением с плавающей точкой и правильным округлением. |
static float |
scalb |
Возвращает f × 2scaleFactor с округлением, как если бы операция выполнялась одним умножением с плавающей точкой и правильным округлением. |
static double |
signum |
Возвращает функцию знака аргумента: ноль, если аргумент равен нулю; 1.0, если аргумент больше нуля; −1.0, если аргумент меньше нуля. |
static float |
signum |
Возвращает функцию знака аргумента: ноль, если аргумент равен нулю; 1.0f, если аргумент больше нуля; −1.0f, если аргумент меньше нуля. |
static double |
sin |
Возвращает тригонометрический синус угла. |
static double |
sinh |
Возвращает гиперболический синус значения double. |
static double |
sqrt |
Возвращает правильно округлённый положительный квадратный корень из значения double. |
static int |
subtractExact |
Возвращает разность аргументов и выбрасывает исключение, если результат переполняет int. |
static long |
subtractExact |
Возвращает разность аргументов и выбрасывает исключение, если результат переполняет long. |
static double |
tan |
Возвращает тригонометрический тангенс угла. |
static double |
tanh |
Возвращает гиперболический тангенс значения double. |
static double |
toDegrees |
Преобразует угол, измеренный в радианах, в приблизительно эквивалентный угол, измеренный в градусах. |
static int |
toIntExact |
Возвращает значение аргумента long и выбрасывает исключение, если значение переполняет int. |
static double |
toRadians |
Преобразует угол, измеренный в градусах, в приблизительно эквивалентный угол, измеренный в радианах. |
static double |
ulp |
Возвращает размер ulp аргумента. |
static float |
ulp |
Возвращает размер ulp аргумента. |
static int |
unsignedMultiplyExact |
Возвращает произведение беззнаковых аргументов и выбрасывает исключение, если результат переполняет беззнаковый int. |
static long |
unsignedMultiplyExact |
Возвращает произведение беззнаковых аргументов и выбрасывает исключение, если результат переполняет беззнаковый long. |
static long |
unsignedMultiplyExact |
Возвращает произведение беззнаковых аргументов и выбрасывает исключение, если результат переполняет беззнаковый long. |
static long |
unsignedMultiplyHigh |
Возвращает в виде long 64 старших бита беззнакового 128-битного произведения двух беззнаковых 64-битных множителей. |
static int |
unsignedPowExact |
Возвращает беззнаковое x в степени n и выбрасывает исключение, если результат переполняет беззнаковое int. |
static long |
unsignedPowExact |
Возвращает беззнаковое x в степени n и выбрасывает исключение, если результат переполняет беззнаковое long. |
Подробное описание полей
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)
- Если аргумент равен NaN или его абсолютное значение больше 1, результат равен NaN.
- Если аргумент равен нулю, результатом будет ноль с тем же знаком, что и у аргумента.
Вычисленный результат должен отличаться от точного не более чем на 1 ulp. Результаты должны быть полумонотонными.
- Параметры:
-
a— значение, арксинус которого необходимо вернуть. - Возвращает:
- арксинус аргумента.
acos
public static double acos(double a)
- Если аргумент равен NaN или его абсолютное значение больше 1, результат равен NaN.
- Если аргумент равен
1.0, результатом будет положительный ноль.
Вычисленный результат должен отличаться от точного не более чем на 1 ulp. Результаты должны быть полумонотонными.
- Параметры:
-
a— значение, арккосинус которого необходимо вернуть. - Возвращает:
- арккосинус аргумента.
atan
public static double atan(double a)
- Если аргумент равен 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)
double значения. Особые случаи: - Если аргумент равен NaN, результат равен NaN.
- Если аргумент равен положительной бесконечности, результат равен положительной бесконечности.
- Если аргумент равен отрицательной бесконечности, результатом будет положительный ноль.
- Если аргумент равен нулю, результат равен
1.0.
Вычисленный результат должен отличаться от точного не более чем на 1 ulp. Результаты должны быть полумонотонными.
- Параметры:
-
a— показатель степени, в которую возводится e. - Возвращает:
- значение e
a, где e — основание натуральных логарифмов.
log
public static double log(double a)
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)
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)
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. - См. также:
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. - См. также:
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. - См. также:
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
- См. также:
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
- См. также:
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
- См. также:
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
- См. также:
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
public static long unsignedMultiplyHigh(long x, long y)
long наиболее значимые 64 бита беззнакового 128-битного произведения двух беззнаковых 64-битных множителей.- Параметры:
-
x- первое значение -
y- второе значение - Возвращает:
- результат
- Since:
- 18
- См. также:
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
- См. также:
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
- См. также:
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
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
- См. также:
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
- См. также:
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
- См. также:
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
- См. также:
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
- См. также:
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
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
- См. также:
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
- См. также:
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
- См. также:
abs
public static int abs(int a)
int. Если аргумент неотрицателен, возвращается сам аргумент. Если аргумент отрицателен, возвращается его противоположное значение. Обратите внимание: если аргумент равен значению Integer.MIN_VALUE, то есть наименьшему представимому значению типа int, результатом будет то же самое отрицательное значение. В отличие от этого, метод absExact(int) для такого значения вызывает исключение ArithmeticException.
- Параметры:
-
a— аргумент, абсолютное значение которого нужно определить - Возвращает:
- абсолютное значение аргумента.
- См. также:
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
public static long abs(long a)
long. Если аргумент неотрицателен, возвращается сам аргумент. Если аргумент отрицателен, возвращается его противоположное значение. Обратите внимание: если аргумент равен значению Long.MIN_VALUE, то есть наименьшему представимому значению типа long, результатом будет то же самое отрицательное значение. В отличие от этого, метод absExact(long) для такого значения вызывает исключение ArithmeticException.
- Параметры:
-
a— аргумент, абсолютное значение которого нужно определить - Возвращает:
- абсолютное значение аргумента.
- См. также:
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
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, возвращается 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, возвращается min. Если значение больше max, возвращается max. В противном случае возвращается исходное значение.- Параметры:
-
value— значение, которое нужно ограничить -
min— минимально допустимое значение -
max— максимально допустимое значение - Возвращает:
- ограниченное значение, входящее в интервал
min..max - Вызывает исключение:
-
IllegalArgumentException— еслиmin > max - Начиная с:
- 21
clamp
public static double clamp(double value, double min, double 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, возвращается 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)
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)
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)
Особые случаи:
- Если аргумент — NaN, результат — NaN.
- Если аргумент равен положительному или отрицательному нулю, результат совпадает с аргументом.
- Параметры:
-
d— значение с плавающей точкой, для которого нужно вернуть функцию знака - Возвращает:
- значение функции знака аргумента
- Начиная с:
- 1.5
signum
public static float signum(float f)
Особые случаи:
- Если аргумент — 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)
Особые случаи:
- Если хотя бы один аргумент бесконечен, результатом будет положительная бесконечность.
- Если хотя бы один аргумент равен NaN и ни один аргумент не бесконечен, результатом будет NaN.
- Если оба аргумента равны нулю, результатом будет положительный ноль.
Вычисленный результат должен отличаться от точного не более чем на 1,5 ulp. Если один параметр зафиксирован, результаты должны быть полу монотонными по другому параметру.
- Параметры:
-
x— значение -
y— значение - Возвращает:
- sqrt(x2 +y2) без промежуточного переполнения или потери значимости
- С версии:
- 1.5
expm1
public static double expm1(double x)
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. - Возвращает:
- значение e
x- 1. - С версии:
- 1.5
log1p
public static double log1p(double x)
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
© 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