Math.tan() вычисляет тангенс угла.
Главное, что нужно запомнить сразу: метод принимает угол не в градусах, а в радианах.
Синтаксис
Math.tan(x)
x - угол в радианах.
Что делает Math.tan()
Метод возвращает тангенс переданного угла.
console.log(Math.tan(0)); // 0
console.log(Math.tan(Math.PI / 4)); // 0.9999999999999999
console.log(Math.tan(Math.PI / 3)); // 1.7320508075688767
Это значит:
Math.tan(0)равно0Math.tan(Math.PI / 4)примерно равно1Math.tan(Math.PI / 3)примерно равно1.732
Что возвращает Math.tan()
Math.tan() возвращает число типа number.
const result = Math.tan(Math.PI / 6);
console.log(result); // 0.5773502691896257
console.log(typeof result); // "number"
В отличие от Math.sin() и Math.cos(), результат Math.tan() не ограничен диапазоном от -1 до 1.
Метод работает в радианах
Это самый важный момент при работе с Math.tan().
console.log(Math.tan(Math.PI / 4)); // 0.9999999999999999
Если передать в метод 45, JavaScript воспримет это как 45 радиан, а не 45 градусов.
console.log(Math.tan(45)); // 1.6197751905438615
Поэтому градусы нужно переводить в радианы.
Как перевести градусы в радианы
Формула такая:
радианы = градусы * Math.PI / 180
Пример:
const angle = 45;
const radians = angle * Math.PI / 180;
console.log(Math.tan(radians)); // 0.9999999999999999
Ещё пример:
const angle = 60;
const radians = angle * Math.PI / 180;
console.log(Math.tan(radians)); // 1.7320508075688767
Популярные значения
Несколько значений удобно знать наизусть.
console.log(Math.tan(0)); // 0
console.log(Math.tan(Math.PI / 6)); // 0.5773502691896257
console.log(Math.tan(Math.PI / 4)); // 0.9999999999999999
console.log(Math.tan(Math.PI / 3)); // 1.7320508075688767
Это примерно соответствует:
tan(0)=0tan(30°)=0.577...tan(45°)=1tan(60°)=1.732...
Math.tan() связан с Math.sin() и Math.cos()
Тангенс можно представить через синус и косинус.
tan(x) = sin(x) / cos(x)
Пример:
console.log(Math.tan(Math.PI / 4)); // 0.9999999999999999
console.log(Math.sin(Math.PI / 4) / Math.cos(Math.PI / 4)); // 0.9999999999999999
Именно поэтому около точек, где Math.cos(x) близок к нулю, результат Math.tan(x) становится очень большим.
Положительные и отрицательные углы
Math.tan() умеет работать и с отрицательными углами.
console.log(Math.tan(Math.PI / 4)); // 0.9999999999999999
console.log(Math.tan(-Math.PI / 4)); // -0.9999999999999999
Это нормальное поведение: знак результата меняется вместе со знаком угла.
Что происходит около Math.PI / 2
Это один из самых важных моментов для тангенса.
console.log(Math.tan(Math.PI / 2)); // 16331239353195370
Математически тангенс в точке π / 2 не определён, потому что косинус там равен нулю.
Но в JavaScript из-за особенностей чисел с плавающей точкой вы обычно увидите не Infinity, а очень большое число.
То же самое видно рядом с этой точкой:
console.log(Math.tan(89 * Math.PI / 180)); // 57.289961630759876
console.log(Math.tan(89.9 * Math.PI / 180)); // 572.9572133543032
console.log(Math.tan(91 * Math.PI / 180)); // -57.28996163075955
Чем ближе угол к 90°, тем больше по модулю становится результат.
Почему Math.tan(Math.PI) не равно ровно 0
Иногда кажется, что здесь должен быть точный ноль, но в JavaScript используются числа с плавающей точкой.
console.log(Math.tan(Math.PI)); // -1.2246467991473532e-16
Это очень маленькое число, практически равное нулю.
Без аргумента
Если вызвать Math.tan() без аргумента, результатом будет NaN.
console.log(Math.tan()); // NaN
Так происходит потому, что метод попытается обработать undefined как число.
Неявное приведение типов
Math.tan() сначала пытается привести аргумент к числу.
console.log(Math.tan("1")); // 1.5574077246549023
console.log(Math.tan(null)); // 0
console.log(Math.tan(true)); // 1.5574077246549023
console.log(Math.tan(undefined)); // NaN
На практике лучше передавать в метод уже готовое число.
NaN и Infinity
Для специальных значений результат будет таким:
console.log(Math.tan(NaN)); // NaN
console.log(Math.tan(Infinity)); // NaN
console.log(Math.tan(-Infinity)); // NaN
Это полезно помнить:
NaNдаётNaNInfinityдаётNaN-InfinityдаётNaN
Число не меняется
Math.tan() не изменяет исходное значение. Он только возвращает новый результат.
const angle = Math.PI / 4;
const result = Math.tan(angle);
console.log(angle); // 0.7853981633974483
console.log(result); // 0.9999999999999999
Когда это полезно
Math.tan() часто используют, когда:
- нужно работать с углами и наклоном
- вы рассчитываете отношение вертикального изменения к горизонтальному
- пишете графику, игры или геометрические вычисления
- нужно найти уклон линии или траектории
Пример с углом наклона:
const angle = 30 * Math.PI / 180;
const slope = Math.tan(angle);
console.log(slope); // 0.5773502691896257
Частые ошибки
Передавать градусы вместо радиан
console.log(Math.tan(45)); // 1.6197751905438615
Такой результат получается потому, что 45 здесь считается радианами.
Правильно так:
console.log(Math.tan(45 * Math.PI / 180)); // 0.9999999999999999
Ожидать, что Math.tan(Math.PI / 2) даст Infinity
console.log(Math.tan(Math.PI / 2)); // 16331239353195370
Математически тангенс в этой точке не определён, но в JavaScript вы обычно увидите очень большое число из-за погрешности представления.
Ожидать, что Math.tan(Math.PI / 4) даст ровно 1
console.log(Math.tan(Math.PI / 4)); // 0.9999999999999999
Это обычная погрешность вычислений с дробными числами.
Быстрая памятка
Math.tan(x)вычисляет тангенс угла- аргумент должен быть в радианах
- метод возвращает
number - результат не ограничен диапазоном от
-1до1 Math.tan(0)равно0Math.tan(Math.PI / 4)примерно равно1- около
Math.PI / 2результат становится очень большим по модулю - градусы нужно переводить в радианы через
angle * Math.PI / 180
Коротко
Math.tan() - это стандартный способ вычислить тангенс угла в JavaScript. Главное, что нужно запомнить: метод работает в радианах, а около π / 2 результат становится очень большим, потому что тангенс в этой области математически не определён и JavaScript показывает приближённое значение.