Класс 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 и ошибки переполнения должны быть обнаружены, методы addExact, subtractExact, multiplyExact, toIntExact, incrementExact, decrementExact и negateExact выбрасывают 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 определяет свои операции как правильно округленные, что является более строгим условием качества реализации, чем требуется для большинства методов, которые также включены в этот класс.- Since:
- 1.0
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final double |
E |
Значение double, которое ближе всего к e, основа натуральных логарифмов. |
static final double |
PI |
Значение double, которое ближе всего к π, отношению окружности круга к его диаметру. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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 до π. |
static int |
addExact |
Возвращает сумму аргументов, выбрасывая исключение, если результат выходит за пределы int. |
static long |
addExact |
Возвращает сумму аргументов, выбрасывая исключение, если результат выходит за пределы long. |
static double |
asin |
Возвращает арксинус значения; возвращаемый угол находится в диапазоне от -π/2 до π/2. |
static double |
atan |
Возвращает арктангенс значения; возвращаемый угол находится в диапазоне от -π/2 до π/2. |
static double |
atan2 |
Возвращает угол θ из преобразования прямоугольных координат ( x, y) в полярные координаты (r, θ). |
static double |
cbrt |
Возвращает кубический корень из double значения. |
static double |
ceil |
Возвращает наименьшее (ближайшее к отрицательной бесконечности) double значение, которое больше или равно аргументу и равно математическому целому числу. |
static double |
copySign |
Возвращает первый аргумент с плавающей точкой со знаком второго аргумента с плавающей точкой. |
static float |
copySign |
Возвращает первый аргумент с плавающей точкой со знаком второго аргумента с плавающей точкой. |
static double |
cos |
Возвращает тригонометрический косинус угла. |
static double |
cosh |
Возвращает гиперболический косинус double значения. |
static int |
decrementExact |
Возвращает аргумент, уменьшенный на единицу, выбрасывая исключение, если результат выходит за пределы int. |
static long |
decrementExact |
Возвращает аргумент, уменьшенный на единицу, выбрасывая исключение, если результат выходит за пределы 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 |
floorMod |
Возвращает остаток от деления с отбрасыванием дробной части аргументов. |
static int |
floorMod |
Возвращает остаток от деления с отбрасыванием дробной части аргументов long и int. |
static long |
floorMod |
Возвращает остаток от деления с отбрасыванием дробной части аргументов. |
static double |
fma |
Возвращает результат умножения и сложения (fused multiply-add) трёх аргументов; то есть, возвращает точное произведение первых двух аргументов, сложенное с третьим аргументом, и затем округлённое один раз до ближайшего double. |
static float |
fma |
Возвращает результат умножения и сложения (fused multiply-add) трёх аргументов; то есть, возвращает точное произведение первых двух аргументов, сложенное с третьим аргументом, и затем округлённое один раз до ближайшего 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 |
Возвращает логарифм по основанию 10 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 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 |
Возвращает размер единицы в мантиссе для аргумента. |
static float |
ulp |
Возвращает размер единицы в мантиссе для аргумента. |
Подробное описание полей
E
public static final double E
- См. также:
PI
public static final double PI
- См. также:
Подробное описание методов
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 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 значения. Особые случаи: - Если аргумент NaN или меньше нуля, результат NaN.
- Если аргумент положительная бесконечность, результат — положительная бесконечность.
- Если аргумент положительный ноль или отрицательный ноль, результат — отрицательная бесконечность.
- Если аргумент равен 10n для целого n, результат — n. В частности, если аргумент
1.0(100), результат — положительный ноль.
Вычисленное значение должно находиться в пределах 1 ulp от точного результата. Результаты должны быть полумонотонными.
- Параметры:
-
a- значение - Возвращает:
- логарифм по основанию 10 от
a. - С:
- 1.5
sqrt
public static double sqrt(double a)
double значения. Особые случаи: - Если аргумент NaN или меньше нуля, результат NaN.
- Если аргумент положительная бесконечность, результат — положительная бесконечность.
- Если аргумент положительный ноль или отрицательный ноль, результат такой же, как и аргумент.
- Параметры:
-
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.
- Если первый аргумент конечный, а второй аргумент — бесконечность, то результат такой же, как первый аргумент.
- Parameters:
-
f1- делимое. -
f2- делитель. - Returns:
- остаток от деления
f1наf2.
ceil
public static double ceil(double a)
double значение, которое больше или равно аргументу и равно целому математическому числу. Особые случаи: - Если значение аргумента уже равно целому математическому числу, то результат такой же, как аргумент.
- Если аргумент — NaN или бесконечность или положительный или отрицательный ноль, то результат такой же, как аргумент.
- Если значение аргумента меньше нуля, но больше -1.0, то результат — отрицательный ноль.
Math.ceil(x) точно равно значению -Math.floor(-x).- Parameters:
-
a- значение. - Returns:
- наименьшее (ближайшее к отрицательной бесконечности) значение с плавающей запятой, которое больше или равно аргументу и равно целому математическому числу.
floor
public static double floor(double a)
double значение, которое меньше или равно аргументу и равно целому математическому числу. Особые случаи: - Если значение аргумента уже равно целому математическому числу, то результат такой же, как аргумент.
- Если аргумент — NaN или бесконечность или положительный или отрицательный ноль, то результат такой же, как аргумент.
- Parameters:
-
a- значение. - Returns:
- наибольшее (ближайшее к положительной бесконечности) значение с плавающей запятой, которое меньше или равно аргументу и равно целому математическому числу.
rint
public static double rint(double a)
- Если значение аргумента уже равно целому математическому числу, то результат такой же, как аргумент.
- Если аргумент — NaN или бесконечность или положительный или отрицательный ноль, то результат такой же, как аргумент.
- Parameters:
-
a- значение с плавающей запятой. - Returns:
- значение с плавающей запятой, ближайшее к
aи равное целому математическому числу.
atan2
public static double atan2(double y, double x)
x, y) в полярные координаты (r, θ). Этот метод вычисляет фазу θ, вычисляя арктангенс y/x в диапазоне от -π до π. Особые случаи: - Если любой из аргументов — NaN, то результатом является NaN.
- Если первый аргумент — положительный ноль, а второй аргумент — положительный, или первый аргумент — положительный и конечный, а второй аргумент — положительная бесконечность, то результат — положительный ноль.
- Если первый аргумент — отрицательный ноль, а второй аргумент — положительный, или первый аргумент — отрицательный и конечный, а второй аргумент — положительная бесконечность, то результатом является отрицательный ноль.
- Если первый аргумент — положительный ноль, а второй аргумент — отрицательный, или первый аргумент — положительный и конечный, а второй аргумент — отрицательная бесконечность, то результатом является значение, ближайшее к π.
- Если первый аргумент — отрицательный ноль, а второй аргумент — отрицательный, или первый аргумент — отрицательный и конечный, а второй аргумент — отрицательная бесконечность, то результатом является значение, ближайшее к -π.
- Если первый аргумент — положительный, а второй аргумент — положительный или отрицательный ноль, или первый аргумент — положительная бесконечность, а второй аргумент — конечный, то результатом является значение, ближайшее к π/2.
- Если первый аргумент — отрицательный, а второй аргумент — положительный или отрицательный ноль, или первый аргумент — отрицательная бесконечность, а второй аргумент — конечный, то результатом является значение, ближайшее к -π/2.
- Если оба аргумента — положительная бесконечность, то результатом является значение, ближайшее к π/4.
- Если первый аргумент — положительная бесконечность, а второй аргумент — отрицательная бесконечность, то результатом является значение, ближайшее к 3*π/4.
- Если первый аргумент — отрицательная бесконечность, а второй аргумент — положительная бесконечность, то результатом является значение, ближайшее к -π/4.
- Если оба аргумента — отрицательная бесконечность, то результатом является значение, ближайшее к -3*π/4.
Вычисленное значение должно находиться в пределах 2 ulps от точного значения. Результаты должны быть полумонотонными.
- API Note:
- Для y с положительным знаком и конечным ненулевым x, точное математическое значение
atan2равно:- Если x > 0, atan(abs(y/x))
- Если x < 0, π - atan(abs(y/x))
- Parameters:
-
y- координата ординаты -
x- координата абсциссы - Returns:
- компонент θ точки (r, θ) в полярных координатах, соответствующей точке (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 Note:
- Определения особых случаев этого метода отличаются от определений особых случаев рекомендации IEEE 754 для ±
1.0в степени бесконечности. Этот метод рассматривает такие случаи как неопределённые и определяет, что возвращается NaN. Спецификация IEEE 754 рассматривает бесконечную степень как большое целое число (числа с плавающей точкой большой величины являются численно целыми, в частности, чётными целыми числами) и поэтому определяет, что возвращается1.0. - Parameters:
-
a- основание. -
b- показатель степени. - Returns:
- значение
ab.
round
public static int round(float a)
int к аргументу, при равенстве округляет до положительной бесконечности. Особые случаи:
- Если аргумент равен NaN, результат равен 0.
- Если аргумент равен отрицательной бесконечности или любому значению, меньше или равно значению
Integer.MIN_VALUE, результат равен значениюInteger.MIN_VALUE. - Если аргумент равен положительной бесконечности или любому значению, больше или равно значению
Integer.MAX_VALUE, результат равен значениюInteger.MAX_VALUE.
- Parameters:
-
a- значение с плавающей точкой, которое должно быть округлено до целого. - Returns:
- значение аргумента, округлённое до ближайшего
intзначения. - See Also:
round
public static long round(double a)
long к аргументу, при равенстве округляет до положительной бесконечности. Особые случаи:
- Если аргумент равен NaN, результат равен 0.
- Если аргумент равен отрицательной бесконечности или любому значению, меньше или равно значению
Long.MIN_VALUE, результат равен значениюLong.MIN_VALUE. - Если аргумент равен положительной бесконечности или любому значению, больше или равно значению
Long.MAX_VALUE, результат равен значениюLong.MAX_VALUE.
- Parameters:
-
a- значение с плавающей точкой, которое должно быть округлено доlong. - Returns:
- значение аргумента, округлённое до ближайшего
longзначения. - See Also:
random
public static double random()
double значение с положительным знаком, большее или равное 0.0 и меньшее 1.0. Возвращаемые значения выбираются псевдослучайным образом с (приблизительно) равномерным распределением из этого диапазона. При первом вызове этого метода он создаёт новый генератор псевдослучайных чисел, точно так же, как по выражению
new java.util.Random() Этот новый генератор псевдослучайных чисел используется в дальнейшем для всех вызовов этого метода и нигде больше. Этот метод должным образом синхронизирован, чтобы допускать правильное использование более чем одной нитью. Однако, если множеству нитей необходимо генерировать псевдослучайные числа с высокой скоростью, это может уменьшить конкуренцию для каждой нити иметь собственный генератор псевдослучайных чисел.
- API Note:
- Так как наибольшее
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; - Returns:
- псевдослучайное
doubleзначение, большее или равное0.0и меньшее1.0. - See Also:
addExact
public static int addExact(int x, int y)
int.- Parameters:
-
x- первое значение -
y- второе значение - Returns:
- результат
- Throws:
-
ArithmeticException- если результат переполняет int - Since:
- 1.8
addExact
public static long addExact(long x, long y)
long.- Parameters:
-
x- первое значение -
y- второе значение - Returns:
- результат
- Throws:
-
ArithmeticException- если результат переполняет long - Since:
- 1.8
subtractExact
public static int subtractExact(int x, int y)
int.- Parameters:
-
x- первое значение -
y- второе значение, вычитаемое из первого - Returns:
- результат
- Throws:
-
ArithmeticException- если результат переполняет int - Since:
- 1.8
subtractExact
public static long subtractExact(long x, long y)
long.- Parameters:
-
x- первое значение -
y- второе значение, вычитаемое из первого - Returns:
- результат
- Throws:
-
ArithmeticException- если результат переполняет long - Since:
- 1.8
multiplyExact
public static int multiplyExact(int x, int y)
int.- Parameters:
-
x- первое значение -
y- второе значение - Returns:
- результат
- Throws:
-
ArithmeticException- если результат переполняет int - Since:
- 1.8
multiplyExact
public static long multiplyExact(long x, int y)
long.- Parameters:
-
x- первое значение -
y- второе значение - Returns:
- результат
- Throws:
-
ArithmeticException- если результат выходит за пределы long - Since:
- 9
multiplyExact
public static long multiplyExact(long x, long y)
long.- Parameters:
-
x- первое значение -
y- второе значение - Returns:
- результат
- Throws:
-
ArithmeticException- если результат выходит за пределы long - Since:
- 1.8
incrementExact
public static int incrementExact(int a)
int. Переполнение происходит только для максимального значения.- Parameters:
-
a- значение для увеличения - Returns:
- результат
- Throws:
-
ArithmeticException- если результат выходит за пределы int - Since:
- 1.8
incrementExact
public static long incrementExact(long a)
long. Переполнение происходит только для максимального значения.- Parameters:
-
a- значение для увеличения - Returns:
- результат
- Throws:
-
ArithmeticException- если результат выходит за пределы long - Since:
- 1.8
decrementExact
public static int decrementExact(int a)
int. Переполнение происходит только для минимального значения.- Parameters:
-
a- значение для уменьшения - Returns:
- результат
- Throws:
-
ArithmeticException- если результат выходит за пределы int - Since:
- 1.8
decrementExact
public static long decrementExact(long a)
long. Переполнение происходит только для минимального значения.- Parameters:
-
a- значение для уменьшения - Returns:
- результат
- Throws:
-
ArithmeticException- если результат выходит за пределы long - Since:
- 1.8
negateExact
public static int negateExact(int a)
int. Переполнение происходит только для минимального значения.- Parameters:
-
a- значение для отрицания - Returns:
- результат
- Throws:
-
ArithmeticException- если результат выходит за пределы int - Since:
- 1.8
negateExact
public static long negateExact(long a)
long. Переполнение происходит только для минимального значения.- Parameters:
-
a- значение для отрицания - Returns:
- результат
- Throws:
-
ArithmeticException- если результат выходит за пределы long - Since:
- 1.8
toIntExact
public static int toIntExact(long value)
long аргумента, выбрасывая исключение, если значение выходит за пределы int.- Parameters:
-
value- значение типа long - Returns:
- аргумент как int
- Throws:
-
ArithmeticException- если значение выходит за пределы int - Since:
- 1.8
multiplyFull
public static long multiplyFull(int x, int y)
- Parameters:
-
x- первое значение -
y- второе значение - Returns:
- результат
- Since:
- 9
multiplyHigh
public static long multiplyHigh(long x, long y)
long самые значимые 64 бита 128-битного произведения двух 64-битных множителей.- Parameters:
-
x- первое значение -
y- второе значение - Returns:
- результат
- Since:
- 9
floorDiv
public static int floorDiv(int x, int y)
int значение, которое меньше или равно алгебраическому частному. Существует один особый случай, если делимое равно Integer.MIN_VALUE, а делитель равен -1, тогда происходит переполнение целого числа, и результат равен Integer.MIN_VALUE. Нормальное целочисленное деление работает в режиме округления к нулю (отбрасывание). Эта операция вместо этого работает в режиме округления к отрицательной бесконечности (floor). Режим округления floor дает разные результаты, чем отбрасывание, когда точный результат отрицательный.
- Если знаки аргументов одинаковы, результаты
floorDivи оператора/одинаковы.
Например,floorDiv(4, 3) == 1и(4 / 3) == 1. - Если знаки аргументов разные, частное отрицательное, и
floorDivвозвращает целое число, меньшее или равное частному, а оператор/возвращает целое число, наиболее близкое к нулю.
Например,floorDiv(-4, 3) == -2, в то время как(-4 / 3) == -1.
- Parameters:
-
x- делимое -
y- делитель - Returns:
- наибольшее (ближайшее к положительной бесконечности)
intзначение, которое меньше или равно алгебраическому частному. - Throws:
-
ArithmeticException- если делительyравен нулю - Since:
- 1.8
- See Also:
floorDiv
public static long floorDiv(long x, int y)
long значение, которое меньше или равно алгебраическому частному. Существует один особый случай, если делимое равно Long.MIN_VALUE, а делитель равен -1, тогда происходит переполнение целого числа, и результат равен Long.MIN_VALUE. Нормальное целочисленное деление работает в режиме округления к нулю (отбрасывание). Эта операция вместо этого работает в режиме округления к отрицательной бесконечности (floor). Режим округления floor дает разные результаты, чем отбрасывание, когда точный результат отрицательный.
Примеры см. в floorDiv(int, int).
- Parameters:
-
x- делимое -
y- делитель - Returns:
- наибольшее (ближайшее к положительной бесконечности)
intзначение, которое меньше или равно алгебраическому частному. - Throws:
-
ArithmeticException- если делительyравен нулю - Since:
- 9
- See Also:
floorDiv
public static long floorDiv(long x, long y)
long значение, которое меньше или равно алгебраическому частному. Существует один особый случай, если делимое равно Long.MIN_VALUE, а делитель равен -1, тогда происходит переполнение целого числа, и результат равен Long.MIN_VALUE. Нормальное целочисленное деление работает в режиме округления к нулю (отбрасывание). Эта операция вместо этого работает в режиме округления к отрицательной бесконечности (floor). Режим округления floor дает разные результаты, чем отбрасывание, когда точный результат отрицательный.
Примеры см. в floorDiv(int, int).
- Parameters:
-
x- делимое -
y- делитель - Returns:
- наибольшее (ближайшее к положительной бесконечности)
longзначение, которое меньше или равно алгебраическому частному. - Throws:
-
ArithmeticException- если делительyравен нулю - Since:
- 1.8
- See Also:
floorMod
public static int floorMod(int x, int y)
Остаток от деления по модулю, округленный до ближайшего целого, — это x - (floorDiv(x, y) * y), имеет тот же знак, что и делитель y, и находится в диапазоне -abs(y) < r < +abs(y).
Связь между floorDiv и floorMod такова:
-
floorDiv(x, y) * y + floorMod(x, y) == x
Разница в значениях между floorMod и оператором % обусловлена разницей между floorDiv (возвращает целую часть результата деления, меньшую или равную частному) и оператором / (возвращает целую часть результата, ближайшую к нулю).
Примеры:
- Если знаки аргументов одинаковы, результаты
floorModи оператора%совпадают.
-
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
-
Если знаки аргументов неизвестны, а требуется положительный остаток, его можно вычислить как (floorMod(x, y) + abs(y)) % abs(y).
- Параметры:
-
x- делимое -
y- делитель - Возвращает:
- остаток от деления, округленный до ближайшего целого
x - (floorDiv(x, y) * y) - Исключения:
-
ArithmeticException- если делительyравен нулю - С:
- 1.8
- См. также:
floorMod
public static int floorMod(long x, int y)
Остаток от деления по модулю, округленный до ближайшего целого, — это 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равен нулю - С:
- 9
- См. также:
floorMod
public static long floorMod(long x, long y)
Остаток от деления по модулю, округленный до ближайшего целого, — это 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равен нулю - С:
- 1.8
- См. также:
abs
public static int abs(int a)
Обратите внимание, что если аргумент равен значению Integer.MIN_VALUE, самому малому представимому отрицательному целому значению, результатом является то же самое значение, которое отрицательно. В отличие от этого, метод absExact(int) выбрасывает исключение ArithmeticException для этого значения.
- Параметры:
-
a- аргумент, абсолютное значение которого нужно определить - Возвращает:
- абсолютное значение аргумента.
- См. также:
absExact
public static int absExact(int a)
ArithmeticException, если результат выходит за пределы положительного диапазона целых чисел. Поскольку диапазон целых чисел со знаком в дополнении до двух является асимметричным с одним дополнительным отрицательным значением (JLS 4.2.1), математическое абсолютное значение Integer.MIN_VALUE выходит за пределы положительного диапазона целых чисел, поэтому для этого аргумента выбрасывается исключение.
- Параметры:
-
a- аргумент, абсолютное значение которого нужно определить - Возвращает:
- абсолютное значение аргумента, если переполнение не происходит
- Исключения:
-
ArithmeticException- если аргумент равенInteger.MIN_VALUE - С:
- 15
- См. также:
abs
public static long abs(long a)
Обратите внимание, что если аргумент равен значению Long.MIN_VALUE, самому малому представимому отрицательному длинному целому значению, результатом является то же самое значение, которое отрицательно. В отличие от этого, метод absExact(long) выбрасывает исключение ArithmeticException для этого значения.
- Параметры:
-
a- аргумент, абсолютное значение которого нужно определить - Возвращает:
- абсолютное значение аргумента.
- См. также:
absExact
public static long absExact(long a)
ArithmeticException, если результат выходит за пределы положительного диапазона длинных целых чисел. Поскольку диапазон длинных целых чисел со знаком в дополнении до двух является асимметричным с одним дополнительным отрицательным значением (JLS 4.2.1), математическое абсолютное значение Long.MIN_VALUE выходит за пределы положительного диапазона длинных целых чисел, поэтому для этого аргумента выбрасывается исключение.
- Параметры:
-
a- аргумент, абсолютное значение которого нужно определить - Возвращает:
- абсолютное значение аргумента, если переполнение не происходит
- Исключения:
-
ArithmeticException- если аргумент равенLong.MIN_VALUE - С:
- 15
- См. также:
abs
public static float abs(float a)
- Если аргумент равен положительному или отрицательному нулю, результатом является положительный ноль.
- Если аргумент равен бесконечности, результатом является положительная бесконечность.
- Если аргумент равен NaN, результатом является NaN.
- Примечание API:
- Как подразумевается выше, одно из допустимых реализаций данного метода приведено ниже, которое вычисляет
floatс тем же показателем и мантиссой, что и аргумент, но с гарантированно нулевым битом знака, указывающим на положительное значение:
Float.intBitsToFloat(0x7fffffff & Float.floatToRawIntBits(a)) - Параметры:
-
a- аргумент, абсолютное значение которого нужно определить - Возвращает:
- абсолютное значение аргумента.
abs
public static double abs(double a)
- Если аргумент равен положительному или отрицательному нулю, результатом является положительный ноль.
- Если аргумент равен бесконечности, результатом является положительная бесконечность.
- Если аргумент равен NaN, результатом является NaN.
- Примечание API:
- Как подразумевается выше, одно из допустимых реализаций данного метода приведено ниже, которое вычисляет
doubleс тем же показателем и мантиссой, что и аргумент, но с гарантированно нулевым битом знака, указывающим на положительное значение:
Double.longBitsToDouble((Double.doubleToRawLongBits(a)<<1)>>>1) - Параметры:
-
a- аргумент, абсолютное значение которого нужно определить - Возвращает:
- абсолютное значение аргумента.
max
public static int max(int a, int b)
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. В отличие от операторов числового сравнения, этот метод рассматривает отрицательный ноль как строго меньший, чем положительный ноль. Если один аргумент равен положительному нулю, а другой — отрицательному нулю, результатом является положительный ноль.- Параметры:
-
a— аргумент. -
b— другой аргумент. - Возвращает:
- большее из
aиb.
max
public static double max(double a, double b)
double значений. То есть, результатом является аргумент, более близкий к положительной бесконечности. Если аргументы имеют одинаковое значение, результатом является это же значение. Если какое-либо значение является NaN, то результатом является NaN. В отличие от операторов числового сравнения, этот метод рассматривает отрицательный ноль как строго меньший, чем положительный ноль. Если один аргумент равен положительному нулю, а другой — отрицательному нулю, результатом является положительный ноль.- Параметры:
-
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. В отличие от операторов числового сравнения, этот метод рассматривает отрицательный ноль как строго меньший, чем положительный ноль. Если один аргумент равен положительному нулю, а другой — отрицательному нулю, результатом является отрицательный ноль.- Параметры:
-
a— аргумент. -
b— другой аргумент. - Возвращает:
- меньшее из
aиb.
min
public static double min(double a, double b)
double значений. То есть, результатом является значение, более близкое к отрицательной бесконечности. Если аргументы имеют одинаковое значение, результатом является это же значение. Если какое-либо значение является NaN, то результатом является NaN. В отличие от операторов числового сравнения, этот метод рассматривает отрицательный ноль как строго меньший, чем положительный ноль. Если один аргумент равен положительному нулю, а другой — отрицательному нулю, результатом является отрицательный ноль.- Параметры:
-
a— аргумент. -
b— другой аргумент. - Возвращает:
- меньшее из
aиb.
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-2008.
- Параметры:
-
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-2008.
- Параметры:
-
a— значение -
b— значение -
c— значение - Возвращает:
- (a × b + c) вычисленное, как если бы диапазон и точность были неограниченными, и один раз округлено до ближайшего
floatзначения - С:
- 9
ulp
public static double ulp(double d)
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(-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- значение с плавающей запятой, для которого нужно вернуть signum - Возвращает:
- функцию signum аргумента
- С:
- 1.5
signum
public static float signum(float f)
Особые случаи:
- Если аргумент — NaN, результат — NaN.
- Если аргумент — положительный или отрицательный ноль, результат совпадает с аргументом.
- Параметры:
-
f- значение с плавающей запятой, для которого нужно вернуть signum - Возвращает:
- функцию signum аргумента
- С:
- 1.5
sinh
public static double sinh(double x)
Особые случаи:
- Если аргумент — NaN, то результат — NaN.
- Если аргумент — бесконечность, то результат — бесконечность с тем же знаком, что и аргумент.
- Если аргумент — ноль, то результат — ноль с тем же знаком, что и аргумент.
Вычисленный результат должен быть в пределах 2,5 ulps от точного результата.
- Параметры:
-
x- число, для которого нужно вернуть гиперболический синус. - Возвращает:
- Гиперболический синус
x. - С:
- 1.5
cosh
public static double cosh(double x)
Особые случаи:
- Если аргумент — NaN, то результат — NaN.
- Если аргумент — бесконечность, то результат — положительная бесконечность.
- Если аргумент — ноль, то результат —
1.0.
Вычисленный результат должен быть в пределах 2,5 ulps от точного результата.
- Параметры:
-
x- число, для которого нужно вернуть гиперболический косинус. - Возвращает:
- Гиперболический косинус
x. - С:
- 1.5
tanh
public static double tanh(double x)
Особые случаи:
- Если аргумент — NaN, то результат — NaN.
- Если аргумент — ноль, то результат — ноль с тем же знаком, что и аргумент.
- Если аргумент — положительная бесконечность, то результат —
+1.0. - Если аргумент — отрицательная бесконечность, то результат —
-1.0.
Вычисленный результат должен быть в пределах 2,5 ulps от точного результата. Результат 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 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, этот метод не требует, чтобы аргументы NaN sign обрабатывались как положительные значения; реализации могут обрабатывать некоторые аргументы NaN как положительные, а другие — как отрицательные, чтобы повысить производительность.- Параметры:
-
magnitude- параметр, задающий модуль результата -
sign- параметр, задающий знак результата - Возвращает:
- значение с модулем
magnitudeи знакомsign. - С:
- 1.6
copySign
public static float copySign(float magnitude, float sign)
StrictMath.copySign, этот метод не требует, чтобы аргументы NaN sign обрабатывались как положительные значения; реализации могут обрабатывать некоторые аргументы NaN как положительные, а другие — как отрицательные, чтобы повысить производительность.- Параметры:
-
magnitude- параметр, задающий модуль результата -
sign- параметр, задающий знак результата - Возвращает:
- значение с модулем
magnitudeи знакомsign. - С:
- 1.6
getExponent
public static int getExponent(float f)
float. Особые случаи: - Если аргумент — NaN или бесконечность, то результат —
Float.MAX_EXPONENT+ 1. - Если аргумент — ноль или поднормализованное число, то результат —
Float.MIN_EXPONENT-1.
- Параметры:
-
f- значение с плавающей запятой - Возвращает:
- несмещённый показатель степени аргумента
- С:
- 1.6
getExponent
public static int getExponent(double d)
double. Особые случаи: - Если аргумент — NaN или бесконечность, то результат —
Double.MAX_EXPONENT+ 1. - Если аргумент — ноль или поднормализованное число, то результат —
Double.MIN_EXPONENT-1.
- Параметры:
-
d- значение с плавающей запятой - Возвращает:
- несмещённый показатель степени аргумента
- С:
- 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
- Параметры:
-
d- начальное значение с плавающей запятой - Возвращает:
- Смежное значение с плавающей запятой, ближе к положительной бесконечности.
- С:
- 1.6
nextUp
public static float nextUp(float f)
f в направлении положительной бесконечности. Этот метод семантически эквивалентен nextAfter(f,
Float.POSITIVE_INFINITY); однако, реализация nextUp может выполняться быстрее, чем эквивалентный вызов nextAfter. Особые случаи:
- Если аргумент является NaN, результатом является NaN.
- Если аргумент является положительной бесконечностью, результатом является положительная бесконечность.
- Если аргумент равен нулю, результатом является
Float.MIN_VALUE
- Параметры:
-
f- начальное значение с плавающей запятой - Возвращает:
- Смежное значение с плавающей запятой, ближе к положительной бесконечности.
- С:
- 1.6
nextDown
public static double nextDown(double d)
d в направлении отрицательной бесконечности. Этот метод семантически эквивалентен nextAfter(d,
Double.NEGATIVE_INFINITY); однако, реализация nextDown может выполняться быстрее, чем эквивалентный вызов nextAfter. Особые случаи:
- Если аргумент является NaN, результатом является NaN.
- Если аргумент является отрицательной бесконечностью, результатом является отрицательная бесконечность.
- Если аргумент равен нулю, результатом является
-Double.MIN_VALUE
- Параметры:
-
d- начальное значение с плавающей запятой - Возвращает:
- Смежное значение с плавающей запятой, ближе к отрицательной бесконечности.
- С:
- 1.8
nextDown
public static float nextDown(float f)
f в направлении отрицательной бесконечности. Этот метод семантически эквивалентен nextAfter(f,
Float.NEGATIVE_INFINITY); однако, реализация nextDown может выполняться быстрее, чем эквивалентный вызов nextAfter. Особые случаи:
- Если аргумент является NaN, результатом является NaN.
- Если аргумент является отрицательной бесконечностью, результатом является отрицательная бесконечность.
- Если аргумент равен нулю, результатом является
-Float.MIN_VALUE
- Параметры:
-
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.
- Если первый аргумент бесконечен, то возвращается бесконечность с тем же знаком.
- Если первый аргумент равен нулю, то возвращается ноль с тем же знаком.
- Параметры:
-
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.
- Если первый аргумент бесконечен, то возвращается бесконечность с тем же знаком.
- Если первый аргумент равен нулю, то возвращается ноль с тем же знаком.
- Параметры:
-
f- число, которое нужно масштабировать с помощью степени двойки. -
scaleFactor- степень двойки, используемая для масштабированияf - Возвращает:
-
f× 2scaleFactor - С:
- 1.6
© 1993, 2021, 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/17/docs/api/java.base/java/lang/Math.html