# Math

Die Klasse **Math** stellt eine Sammlung mathematischer Funktionen und Konstanten bereit. Sie enthält ausschließlich **statische Methoden und Felder**, weshalb kein Objekt erstellt werden muss.

Mit `Math` lassen sich unter anderem:

- Zahlen runden
- Beträge berechnen
- Potenzen und Wurzeln bestimmen
- Minimal- und Maximalwerte ermitteln
- trigonometrische Funktionen verwenden
- mathematische Konstanten wie π oder e nutzen

Die Klasse gehört zum Namespace **System** und steht in PowerShell standardmäßig zur Verfügung.

---

## **Grundlagen**

<table id="bkmrk-eigenschaft-wert-nam"><thead><tr><th>Eigenschaft</th><th>Wert</th></tr></thead><tbody><tr><td>Namespace</td><td>`System`</td></tr><tr><td>Assembly</td><td>`System.Runtime`</td></tr><tr><td>Instanziierbar</td><td>❌ Nein</td></tr><tr><td>Statisch</td><td>✅ Ja</td></tr><tr><td>Vererbt von</td><td>`Object`</td></tr></tbody></table>

### Klasse verwenden

Da alle Mitglieder statisch sind, erfolgt der Aufruf direkt über den Klassennamen.

```powershell
[Math]::Sqrt(25)
```

Ausgabe

```
5
```

---

### Keine Instanziierung erforderlich

Im Gegensatz zu vielen anderen .NET-Klassen wird kein Objekt erzeugt.

**Nicht erforderlich**

```powershell
New-Object Math
```

**Stattdessen**

```powershell
[Math]::Pow(2,8)
```

---

### Rückgabewerte

Die meisten Methoden geben einen numerischen Wert zurück.

Je nach Methode erfolgt die Rückgabe beispielsweise als:

<table id="bkmrk-datentyp-beschreibun"><thead><tr><th>Datentyp</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Double</td><td>Gleitkommazahl</td></tr><tr><td>Int32</td><td>Ganze Zahl</td></tr><tr><td>Decimal</td><td>Dezimalzahl (je nach Parameter)</td></tr></tbody></table>

---

## Konstanten

<table id="bkmrk-name-typ-beschreibun"><thead><tr><th>Name</th><th>Typ</th><th>Beschreibung</th></tr></thead><tbody><tr><td>PI</td><td>Double</td><td>Kreiszahl π</td></tr><tr><td>E</td><td>Double</td><td>Eulersche Zahl</td></tr></tbody></table>

### Beispiel

```powershell
[Math]::PI
[Math]::E
```

Ausgabe

```
3,14159265358979
2,71828182845905
```

---

## **Methoden**

### Übersicht

<table id="bkmrk-methode-beschreibung"><thead><tr><th>Methode</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Abs()</td><td>Berechnet den Betrag einer Zahl</td></tr><tr><td>Ceiling()</td><td>Rundet auf die nächstgrößere ganze Zahl</td></tr><tr><td>Clamp()</td><td>Begrenzt einen Wert auf einen Bereich</td></tr><tr><td>Floor()</td><td>Rundet auf die nächstkleinere ganze Zahl</td></tr><tr><td>Max()</td><td>Gibt den größeren Wert zurück</td></tr><tr><td>Min()</td><td>Gibt den kleineren Wert zurück</td></tr><tr><td>Pow()</td><td>Berechnet Potenzen</td></tr><tr><td>Round()</td><td>Rundet Zahlen</td></tr><tr><td>Sign()</td><td>Bestimmt das Vorzeichen</td></tr><tr><td>Sqrt()</td><td>Berechnet Quadratwurzeln</td></tr><tr><td>Truncate()</td><td>Entfernt Nachkommastellen</td></tr></tbody></table>

<details id="bkmrk-betrag-betrag-%5Bmath%5D"><summary>Abs()</summary>

### **Abs()**

Berechnet den Betrag einer Zahl

```powershell
[Math]::Abs(-15)
```

Ausgabe

```
15
```

</details><details id="bkmrk-wert-begrenzen-wert-"><summary>Clamp()</summary>

### **Clamp()**

Die Methode **Clamp()** begrenzt einen Wert auf einen angegebenen Minimal- und Maximalwert.   
Liegt der Wert innerhalb des Bereichs, wird er unverändert zurückgegeben.

<p class="callout info">Diese Methode ist ab **.NET Core 2.0** bzw. **.NET Standard 2.1** verfügbar.   
Sie steht daher **nicht** in **Windows PowerShell 5.1 (.NET Framework)** zur Verfügung, sondern erst ab **PowerShell Core 6.0**.</p>

#### Syntax

```powershell
[Math]::Clamp(<Wert>, <Minimum>, <Maximum>)
```

#### Parameter

<table><thead><tr><th>Parameter</th><th>Typ</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Wert</td><td>numerisch</td><td>Zu prüfender Wert</td></tr><tr><td>Minimum</td><td>numerisch</td><td>Kleinster erlaubter Wert</td></tr><tr><td>Maximum</td><td>numerisch</td><td>Größter erlaubter Wert</td></tr></tbody></table>

#### Rückgabewert

Gleicher Datentyp wie die Eingabewerte.

#### Beispiel

```powershell
[Math]::Clamp(120,0,100)
[Math]::Clamp(-5,0,100)
[Math]::Clamp(50,0,100)
```

Ausgabe

```text
100
0
50
```

</details><details id="bkmrk-ceiling%28%29-ceiling-di"><summary>Ceiling()</summary>

### **Ceiling()**

Die Methode **Ceiling()** rundet eine Zahl **immer auf die nächstgrößere ganze Zahl auf**. Besitzt die Zahl bereits keinen Nachkommateil, bleibt sie unverändert.

#### Syntax

```powershell
[Math]::Ceiling(<Zahl>)
```

#### Parameter

<div class="TyagGW_tableContainer"><div class="group TyagGW_tableWrapper flex flex-col-reverse w-fit" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="580" data-start="457"><thead data-end="491" data-start="457"><tr data-end="491" data-start="457"><th class="last:pe-10" data-col-size="sm" data-end="469" data-start="457">Parameter</th><th class="last:pe-10" data-col-size="sm" data-end="475" data-start="469">Typ</th><th class="last:pe-10" data-col-size="sm" data-end="491" data-start="475">Beschreibung</th></tr></thead><tbody data-end="580" data-start="527"><tr data-end="580" data-start="527"><td data-col-size="sm" data-end="534" data-start="527">Zahl</td><td data-col-size="sm" data-end="553" data-start="534">Double / Decimal</td><td data-col-size="sm" data-end="580" data-start="553">Die aufzurundende Zahl.</td></tr></tbody></table>

</div></div>#### Rückgabewert

**Double** bzw. **Decimal**

Die aufgerundete ganze Zahl.

#### Beispiel

```powershell
[Math]::Ceiling(4.2)
[Math]::Ceiling(-4.2)
```

Ausgabe

```powershell
5
-4
```

</details><details id="bkmrk-floor%28%29-floor%28%29-besc"><summary>Floor()</summary>

### **Floor()**

Die Methode **Floor()** rundet eine Zahl **immer auf die nächstkleinere ganze Zahl ab**.

#### Syntax

```powershell
[Math]::Floor(<Zahl>)
```

#### Parameter

<table><thead><tr><th>Parameter</th><th>Typ</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Zahl</td><td>Double / Decimal</td><td>Die abzurundende Zahl.</td></tr></tbody></table>

#### Rückgabewert

**Double** bzw. **Decimal**

Die abgerundete ganze Zahl.

#### Beispiel

```powershell
[Math]::Floor(4.9)
[Math]::Floor(-4.2)
```

Ausgabe

```text
4
-5
```

</details><details id="bkmrk-min%28%29-min%28%29-beschrei"><summary>Min()</summary>

### **Min()**

Die Methode **Min()** gibt den kleineren von zwei Werten zurück.

#### Syntax

```powershell
[Math]::Min(<Wert1>, <Wert2>)
```

#### Parameter

<table><thead><tr><th>Parameter</th><th>Typ</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Wert1</td><td>numerisch</td><td>Erster Vergleichswert</td></tr><tr><td>Wert2</td><td>numerisch</td><td>Zweiter Vergleichswert</td></tr></tbody></table>

#### Rückgabewert

Gleicher Datentyp wie die Eingabewerte.

#### Beispiel

```powershell
[Math]::Min(12,8)
```

Ausgabe

```text
8
```

</details><details id="bkmrk-gr%C3%B6%C3%9Feren-wert-bestim"><summary>Max()</summary>

### **Max()**

Den größeren Wert bestimmen

```powershell
[Math]::Max(15,42)
```

Ausgabe

```
42
```

</details><details id="bkmrk-potenz-potenz-%5Bmath%5D"><summary>Pow()</summary>

### **Pow()**

Berechnet Potenzen

```powershell
[Math]::Pow(5,3)
```

Ausgabe

```
125
```

</details><details id="bkmrk-runden-runden-%5Bmath%5D"><summary>Round()</summary>

### **Round()**

Rundet Zahlen

```powershell
[Math]::Round(3.14159,2)
```

Ausgabe

```
3.14
```

</details><details id="bkmrk-sign%28%29-sign%28%29-beschr"><summary>Sign()</summary>

### **Sign()**

#### Beschreibung

Die Methode **Sign()** bestimmt das Vorzeichen einer Zahl.


#### Syntax

```powershell
[Math]::Sign(<Zahl>)
```

#### Parameter

<table><thead><tr><th>Parameter</th><th>Typ</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Zahl</td><td>numerisch</td><td>Zu prüfende Zahl</td></tr></tbody></table>

#### Rückgabewert

**Rückgabetyp**: `System.Int32`

<table><thead><tr><th>Rückgabe</th><th>Bedeutung</th></tr></thead><tbody><tr><td>-1</td><td>Zahl ist negativ</td></tr><tr><td>0</td><td>Zahl ist 0</td></tr><tr><td>1</td><td>Zahl ist positiv</td></tr></tbody></table>

#### Beispiel

```powershell
[Math]::Sign(-20)
[Math]::Sign(0)
[Math]::Sign(20)
```

Ausgabe

```text
-1
0
1
```

</details><details id="bkmrk-quadratwurzel-quadra"><summary>Sqrt()</summary>

### **Sqrt()**

Berechnet Quadratwurzeln

```powershell
[Math]::Sqrt(64)
```

Ausgabe

```
8
```

</details><details id="bkmrk-truncate%28%29-truncate%28"><summary>Truncate()</summary>

### **Truncate()**

Die Methode **Truncate()** entfernt den Nachkommateil einer Zahl, ohne zu runden.

#### Syntax

```powershell
[Math]::Truncate(<Zahl>)
```

#### Parameter

<table><thead><tr><th>Parameter</th><th>Typ</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Zahl</td><td>Double / Decimal</td><td>Zu kürzende Zahl</td></tr></tbody></table>

#### Rückgabewert

**Double** bzw. **Decimal**

Die Zahl ohne Nachkommastellen.

#### Beispiel

```powershell
[Math]::Truncate(4.9)
[Math]::Truncate(-4.9)
```

Ausgabe

```text
4
-4
```

</details>---

## **Weitere Details**

### Häufige Einsatzgebiete

Die Klasse `Math` wird häufig verwendet für:

- mathematische Berechnungen
- Koordinaten- und Geometrieberechnungen
- Diagramme und Visualisierungen
- Spieleentwicklung
- Größen- und Positionsberechnungen
- statistische Auswertungen
- wissenschaftliche Berechnungen

---

### Hinweise

- Alle Methoden sind **statisch**.
- Die Klasse kann nicht instanziiert werden.
- Für viele Methoden existieren mehrere Überladungen, die unterschiedliche numerische Datentypen unterstützen (`Int32`, `Double`, `Decimal` usw.).
- Die meisten Berechnungen arbeiten mit dem Datentyp `Double`, wodurch Rundungsungenauigkeiten bei Gleitkommazahlen auftreten können.

---

### Siehe auch

- `System.Random`
- `System.Convert`
- `System.Decimal`
- `System.Numerics`