tan()
Функция tan() в PHP возвращает тангенс угла. Угол должен быть задан в радианах.
Функция tan() в PHP возвращает тангенс угла. Угол должен быть задан в радианах, а не в градусах — это наиболее распространённая причина неверных результатов, и ниже мы рассмотрим, как выполнить преобразование.
В этой главе объясняются синтаксис, параметры и возвращаемое значение tan(), приводятся исполняемые примеры, а также указываются подводные камни (радианы против градусов, значения, при которых тангенс стремится к бесконечности).
Что делает функция tan()
В прямоугольном треугольнике тангенс угла — это отношение стороны напротив угла к стороне прилежащей к нему. Эквивалентно: tan(x) = sin(x) / cos(x).
tan() принимает один угол в радианах и возвращает это отношение как значение типа float. Полный круг равен 2π радиан (360°), поэтому π/4 радиан соответствует 45°, тангенс которого равен 1.
Синтаксис
tan(float $num): float| Параметр | Тип | Описание |
|---|---|---|
$num | float | Угол, в радианах. |
Возвращаемое значение: float — тангенс $num.
Базовый пример
Здесь мы передаём pi() / 4 радиан (45°). Тангенс 45° точно равен 1, однако из-за ошибок округления с плавающей точкой выводится нечто вроде 0.99999999999999.
Работа с градусами
Большинство людей мыслят в градусах, но tan() понимает только радианы. Сначала выполните преобразование с помощью deg2rad() или умножьте на pi() / 180:
<?php
$degrees = 60;
// Convert degrees to radians before calling tan()
$radians = deg2rad($degrees);
echo tan($radians); // ~1.7320508075689 (√3)
?>Передача 60 напрямую в tan(60) вычислит тангенс 60 радиан — совершенно другое, бессмысленное значение для данного случая.
Подводный камень: где тангенс «уходит в бесконечность»
Тангенс равен sin(x) / cos(x), поэтому он не определён там, где cos(x) равен нулю — при 90°, 270° и т. д. (π/2 + nπ). В математике это бесконечность; при вычислениях с плавающей точкой cos(pi()/2) является крошечным ненулевым числом, поэтому tan() возвращает очень большое конечное значение вместо INF:
<?php
echo tan(pi() / 2); // ~1.6331239353195E+16 (very large, not exactly INF)
?>Если вам нужна точная проверка «не определено», проверьте, близко ли cos($x) к нулю, прежде чем делить.
Связанные функции
tanh()— гиперболический тангенс.atan()— обратный тангенс (арктангенс), возвращает угол в радианах.sin()иcos()— составляющие тангенса.deg2rad()иrad2deg()— преобразование между градусами и радианами.
Заключение
tan() возвращает тангенс угла, выраженного в радианах. Запомните два ключевых момента: сначала преобразуйте градусы в радианы, и учитывайте, что тангенс не определён при 90° + кратных 180°, где PHP возвращает очень большое значение вместо бесконечности.