Что находится внутри класса Math? – Java Interview Review
jLove – conference for Java developers

Что находится внутри класса Math?

Посмотреть в Telegram: @JavaSobes/276
java.lang.Math – типичный utility-класс с только статическими членами и закрытым конструктором. Он предоставляет набор математических функций. Условно члены класса можно разделить на следующие категории:

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

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

expЭкспонента – число Эйлера (e) в степени х
logНатуральный логарифм
log10Десятичный логарифм
sqrtКвадратный корень
cbrtКубический корень
powCтепень
absMодуль
maxМаксимум из двух чисел
minМинимум из двух чисел
signumСигнум
randomПсевдослучайное число в интервале [0;1)

Тригонометрия. Важные функции из соответствующего раздела математики.

Тригонометрия

sinСинус
cosКосинус
tanТангенс
asinАрксинус
acosАрккосинус
atanАрктангенс
sinhГиперболический синус
coshГиперболический косинус
tanhГиперболический тангенс
atan2Зенитный угол по прямоугольным координатам

Защита от переполнения. Если Integer.MAX_VALUE увеличить на 1, получится Integer.MIN_VALUE. При переполнении максимально возможного значения, оно «идет по кругу». История помнит, как дорого может стоить эта ошибка. Набор специальных функций помогает работать с переполнениями безопаснее.

Защита от переполнения

addExactСложение с выбросом исключения при переполнении
subtractExactВычитание с выбросом исключения при переполнении
multiplyExactУмножение с выбросом исключения при переполнении
incrementExactИнкремент (x++) с выбросом исключения при переполнении
decrementExactДекремент (x--) с выбросом исключения при переполнении
negateExactСмена знака (-x) с выбросом исключения при переполнении
toIntExactСужение типа long→int с выбросом исключения при переполнении
multiplyFullПроизведение с расширением типа int→long
multiplyHighСтаршие биты произведения при переполнении
Комбинации математических операций. Часто используемые сочетания функций, которые вместе могут быть вычислены компьютером эффективнее, чем если вызывать по отдельности. Как пример, среднее квадратическое: sqrt(x^2 + y^2).

Комбинации математических операций

floorDivfloor(x/y)
floorModfloor(x%y)
fmaa*b+c
hypotСреднее квадратическое: sqrt(x^2+y^2)
expm1e^x - 1
log1pln(1 + x)
copySignx*signum(y)
scalbx*2^y
IEEE754. Из-за особенностей хранения в компьютере чисел с плавающей точкой, расстояние между двумя соседними числами бывает разным. Это расстояние называется ulp (units in the last place). Набор методов дает возможность работать с этим значением. В терминах ulp также определяется точность всех методов Math по работе с дробными числами.

IEEE754

IEEEremainderОстаток от деления по IEEE754
ulpРасстояние до следующего числа с плавающей точкой
getExponentЭкспонента числа с плавающей точкой
nextAfterСледующее за x число с плавающей точкой в сторону y
nextUpСледующее число с плавающей точкой
nextDownПредыдущее число с плавающей точкой
Округление. Поиск ближайших к заданному целых чисел.

Округление

ceilОкругление вверх
floorОкругление вниз
rintОтбрасывание нецелой погрешности числа с плавающей точкой
roundОкругление к ближайшему целому
Конвертация углов. Из градусов в радианы и обратно.

Конвертация углов

toRadiansГрадусы в радианы
toDegreesРадианы в градусы
Константы. Число Пи и число Эйлера.

Константы

EЧисло Эйлера (e)
PIЧисло Пи