Руководство по классу Java Math

Руководство по классу Java Math

1. Вступление

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

2. Основные математические функции

Первый набор методов, который мы рассмотрим, - это основные математические функции, такие как абсолютное значение, квадратный корень, максимум или минимум между двумя значениями.

2.1. abs()с

Методabs() возвращает абсолютное значение заданного значения:

Math.abs(-5); // returns 5

Аналогичным образом, из других, которые мы увидим далее,abs() принимает в качестве параметраint, long, float илиdouble и возвращает относительное значение.

2.2. pow()с

Вычисляет и возвращает значение первого аргумента, возведенного в степень второго:

Math.pow(5,2); // returns 25

Мы обсудим этот метод более подробно вhere.

2.3. sqrt()с

Возвращает округленный положительный квадратный корень изdouble:

Math.sqrt(25); // returns 5

Если аргументNaN или меньше нуля, результатом будетNaN.

2.4. cbrt()с

Точно так жеcbrt() возвращает кубический корень изdouble:

Math.cbrt(125); // returns 5

2.5. max()с

Как следует из названия метода, он возвращает максимум между двумя значениями:

Math.max(5,10); // returns 10

Здесь снова метод принимаетint, long, float илиdouble.

2.6. min() с

Таким же образомmin() возвращает минимум между двумя значениями:

Math.min(5,10); // returns 5

2.7. random()с

Возвращает псевдослучайноdouble  больше или равно 0,0 и меньше 1,0:

double random = Math.random()

Для этогоthe method creates a single instance of java.util.Random() number generator when it is called for the first time. 

После этого для всех вызовов этого метода используется один и тот же экземпляр. Обратите внимание, что метод синхронизирован, поэтому может использоваться более чем одним потоком.

Мы можем найти больше примеров того, как сгенерировать случайное значение вthis article.

2.8. signum()с

Полезно, когда нам нужно знать знак значения:

Math.signum(-5) // returns -1

Этот метод возвращает 1.0, если аргумент больше нуля или -1.0 в противном случае. Если аргумент является нулевым положительным или нулевым отрицательным, результат совпадает с аргументом.

Вход может бытьfloat илиdouble.

2.9. copySign()с

Принимает два параметра и возвращает первый аргумент со знаком второго аргумента:

Math.copySign(5,-1); // returns -5

Аргументы также могут бытьfloat илиdouble.

3. Экспоненциальные и логарифмические функции

Помимо основных математических функций,the Math class contains methods to solve exponential and logarithmic functions.

3.1. exp()с

Методexp() получает аргументdouble и возвращает число Эйлера, возведенное в степень аргумента (ex):

Math.exp(1); // returns 2.718281828459045

3.2. expm1()с

Подобно описанному выше методу,expm1() вычисляет число Эйлера, возведенное в степень полученного аргумента, но добавляет -1 (ex -1):

Math.expm1(1); // returns 1.718281828459045

3.3. log()с

Возвращает натуральный логарифм значенияdouble:

Math.log(Math.E); // returns 1

3.4. log10()с

Возвращает логарифм в базе 10 аргумента:

Math.log10(10); // returns 1

3.5. log1p()с

Аналогичноlog(), , но он добавляет 1 к аргументу ln (1 + x):

Math.log1p(Math.E); // returns 1.3132616875182228

4. Тригонометрические функции

Когда нам приходится работать с геометрическими формулами, нам всегда нужны тригонометрические функции; их предоставляет классMath.

4.1. sin()с

Получает единственный аргументdouble, представляющий угол (в радианах), и возвращает тригонометрический синус:

Math.sin(Math.PI/2); // returns 1

4.2. cos()с

Таким же образомcos() возвращает тригонометрический косинус угла (в радианах):

Math.cos(0); // returns 1

4.3. tan()с

Возвращает тригонометрический тангенс угла (в радианах):

Math.tan(Math.PI/4); // returns 1

4.4. sinh(), cosh(), tanh()с

Они возвращают соответственно гиперболический синус, гиперболический косинус и гиперболический тангенс значенияdouble:

Math.sinh(Math.PI);

Math.cosh(Math.PI);

Math.tanh(Math.PI);

4.5. как в()

Возвращает арксинус полученного аргумента:

Math.asin(1); // returns pi/2

В результате получается угол в диапазоне от -pi / 2 доpi / 2.

4.6. acos()с

Возвращает арккосинус полученного аргумента:

Math.acos(0); // returns pi/2

Результат - угол в диапазоне от 0 доpi.

4.7. atan()с

Возвращает арктангенс полученного аргумента:

Math.atan(1); // returns pi/4

В результате получается угол в диапазоне от -pi / 2 доpi / 2.

4.8. atan2()с

Наконец,atan2() получает координату ординатыy и координату абсциссыx, и возвращает уголϑ из преобразования прямоугольных координат(x,y) в полярные координаты(r, ϑ):

Math.atan2(1,1); // returns pi/4

4.9. toDegrees()с

Этот метод полезен, когда нам нужно преобразовать радианы в градусы:

Math.toDegrees(Math.PI); // returns 180

4.10. toRadians()с

С другой стороны,toRadians() полезен для обратного преобразования:

Math.toRadians(180); // returns pi

Помните, что большинство методов, которые мы видели в этом разделе, принимают аргументы в радианах, поэтому, когда у нас есть угол в градусах, этот метод следует использовать перед использованием тригонометрического метода.

Дополнительные примеры см. Вhere.

5. Округление и другие функции

Наконец, давайте посмотрим на методы округления.

5.1. ceil()с

ceil() полезен, когда нам нужно округлить целое число до наименьшего значенияdouble, которое больше или равно аргументу:

Math.ceil(Math.PI); // returns 4

Вthisarticle мы используем этот метод для округления числа до ближайшей сотни.

5.2. floor()с

Чтобы округлить число до наибольшегоdouble, которое меньше или равно аргументу, мы должны использоватьfloor():

Math.floor(Math.PI); // returns 3

5.3. getExponent()с

Возвращает беспристрастный показатель аргумента.

Аргументом может бытьdouble илиfloat:

Math.getExponent(333.3); // returns 8

Math.getExponent(222.2f); // returns 7

5.4. IEEEreminder()с

Вычисляет деление между первым (делимое) и вторым (делителем) аргументом и возвращает остаток, как предписаноIEEE 754 standard:

Math.IEEEremainder(5,2); // returns 1

5.5. nextAfter()с

Этот метод полезен, когда нам нужно знать соседнее значениеdouble илиfloat:

Math.nextAfter(1.95f,1); // returns 1.9499999

Math.nextAfter(1.95f,2); // returns 1.9500002

Он принимает два аргумента: первый - это значение, для которого вы хотите знать соседнее число, а второй - направление.

5.6. nextUp()с

Аналогично предыдущему методу, но этот возвращает соседнее значение только в направлении положительной бесконечности:

Math.nextUp(1.95f); // returns 1.9500002

5.7. rint()с

Возвращаетdouble t, которое является ближайшим целочисленным значением аргумента:

Math.rint(1.95f); // returns 2.0

5.8. round()с

То же, что и вышеупомянутый метод, но этот возвращает значениеint, если аргумент -float , и значениеlong, если аргумент -double:

int result = Math.round(1.95f); // returns 2

long result2 = Math.round(1.95) // returns 2

5.9. scalb()с

Скальб это аббревиатура от «бинарного масштаба». Эта функция выполняет одну смену, одно преобразование и двойное умножение:

Math.scalb(3, 4); // returns 3*2^4

5.10. ulp()с

Методulp() возвращает расстояние от числа до ближайших соседей:

Math.ulp(1); // returns 1.1920929E-7
Math.ulp(2); // returns 2.3841858E-7
Math.ulp(4); // returns 4.7683716E-7
Math.ulp(8); // returns 9.536743E-7

5.11. hypot()с

Возвращает квадратный корень из суммы квадратов своего аргумента:

Math.hypot(4, 3); // returns 5

Метод вычисляет квадратный корень без промежуточного или недостаточного переполнения.

Вthis article мы используем этот метод для вычисления расстояния между двумя точками.

6. Математические функции Java 8

КлассMath был пересмотрен в Java 8 и теперь включает новые методы для выполнения наиболее распространенных арифметических операций.

Мы обсуждали эти методыin another article.

7. Поля констант

В дополнение к методамMath class объявляет два константных поля:

public static final double E

public static final double PI

Что указывает на более близкое значение к основанию натурального логарифма и более близкое значение кpi, соответственно.

8. Заключение

В этой статье мы описали API, которые Java предоставляет для математических операций.

Как обычно, доступны все фрагменты кода, представленные здесьover on GitHub.