Start · Sprachen · JavaScript · Referenz · Math.tan()

Math.tan()

Methode

Die statische Methode <code>Math.tan()</code> gibt den Tangens eines Winkels zurück, der in Bogenmaß (Radiant) angegeben ist.

seit JavaScript ES1 (Baseline: alle Browser) Kategorie: method-property

Signatur

Math.tan(x)

Beschreibung

Math.tan() berechnet den Tangens des übergebenen Winkels. Der Tangens ist das Verhältnis von Gegenkathete zu Ankathete im rechtwinkligen Dreieck und entspricht Math.sin(x) / Math.cos(x). Da tan eine statische Methode von Math ist, ruft man sie immer als Math.tan() auf. Math ist kein Konstruktor.

Der Winkel muss in Bogenmaß angegeben werden, nicht in Grad. Einen Gradwert rechnet man mit grad * Math.PI / 180 um. Typische Einsatzgebiete sind Höhen- und Entfernungsberechnungen, Steigungen und Gefälle, die Projektion in 2D- und 3D-Grafik (z. B. das Sichtfeld einer Kamera) sowie Animationen im Canvas.

Der Tangens ist periodisch mit der Periode π. An den Stellen π/2 + k·π ist er mathematisch nicht definiert. Weil sich π als Gleitkommazahl nicht exakt darstellen lässt, liefert Math.tan(Math.PI / 2) jedoch kein Infinity, sondern einen sehr großen endlichen Wert.

Parameter

Name Typ Default Beschreibung
$x Pflicht number Winkel in Bogenmaß. Andere Werte werden mit Number() in eine Zahl umgewandelt.

Rückgabewert

Typ
number
Beschreibung
Der Tangens von x. Ist x gleich Infinity, -Infinity oder NaN, ist das Ergebnis NaN. 0 und -0 werden mit ihrem Vorzeichen zurückgegeben.

Beispiele

Grundlegende Werte

console.log(Math.tan(0));
console.log(Math.tan(1));
console.log(Math.tan(Math.PI / 4)); // theoretisch 1
console.log(Math.tan(Infinity));
console.log(Math.tan("1"));      // String wird umgewandelt
0 1.5574077246549023 0.9999999999999999 NaN 1.5574077246549023

Hilfsfunktion für Winkel in Grad

const tanDeg = (grad) => Math.tan((grad * Math.PI) / 180);

console.log(tanDeg(45).toFixed(4));
console.log(tanDeg(60).toFixed(4));
1.0000 1.7321

Höhe eines Gebäudes aus Entfernung und Blickwinkel

const tanDeg = (grad) => Math.tan((grad * Math.PI) / 180);

const entfernung = 50; // Meter bis zum Gebäude
const winkel = 30;     // Höhenwinkel zur Dachkante in Grad

const hoehe = entfernung * tanDeg(winkel);
console.log(`Gebäudehöhe: ${hoehe.toFixed(2)} m`);
Gebäudehöhe: 28.87 m

Steigungswinkel in Prozent umrechnen

const steigungInProzent = (grad) =>
  (Math.tan((grad * Math.PI) / 180) * 100).toFixed(1);

console.log(`${steigungInProzent(5)} %`);
console.log(`${steigungInProzent(45)} %`);
8.7 % 100.0 %

// Wichtig · Fallstricke

  • Bogenmaß statt Grad: Der häufigste Fehler ist ein Gradwert als Argument. Math.tan(45) ergibt 1.6197751905438615, nicht 1.
  • Polstellen: Math.tan(Math.PI / 2) liefert 16331239353195370 statt Infinity. Werte nahe den Polstellen deshalb gezielt abfangen, z. B. mit Math.abs(Math.cos(x)) < Number.EPSILON.
  • Rundungsfehler: Ergebnisse wie 0.9999999999999999 sind bei Gleitkommazahlen normal. Werte deshalb nicht mit === vergleichen, sondern mit einer Toleranz oder nach dem Runden (toFixed()).
  • Genauigkeit je nach Engine: Die Spezifikation schreibt keine bitgenauen Ergebnisse vor. Die letzten Nachkommastellen können sich daher zwischen Browsern bzw. Engines unterscheiden.
  • Die Umkehrfunktion ist Math.atan(). Wenn man einen Winkel aus zwei Koordinaten berechnen will, ist Math.atan2(y, x) besser geeignet, weil es den richtigen Quadranten berücksichtigt.
  • Für BigInt-Werte wirft Math.tan() einen TypeError.