Skip to main content

10 ganz nützlichen Feature der Klasse Java Math

In diesem Beitrag geht es um eine spezielle Java Klasse.
Die Klasse nennt sich Java Math.
Diese ist in der Standardbibliothek von Java enthalten.

Warum solltest du diese Klasse kennen?
Die Math Klasse bietet dir einen Menge Methoden an, welche zur Berechnung von mathematischen Gleichungen ganz hilfreich sind.

Aber auch für Nichtmathematiker ist etwas dabei.

In diesem Beitrag lernst du:

  • Wie du Zufallszahlen mit Java erstellen kannst
  • Wie du den Umfang eines Kreises berechnen kannst
  • Du lernst Börsen- und Umsatzschwankungen mit Hilfe von Java zu analysieren.
  • Außerdem erfährst du, wie du Wurzelziehen und Potenzen mit Java berechnen kannst
  • Und ich stelle dir ein paar Möglichkeiten vor, wie du Zahlen runden kannst.


Wie bereits erwähnt, steht dir die Klasse Math in der Standardbibliothek zur Verfügung.
Und wie bei jeder Standardklasse, findest du die Dokumentation zur Klasse in den Java API Docs.

Wenn du dir die API Docs einmal anschaust, dann fällt als Erstes auf:
Die Math Klasse bietet keinen Konstruktor an.
Es ist also nicht möglich ein Objekt dieser Klasse zu erstellen.

Java Math Konstruktor

Aber dafür gibt es eine Menge statische Methoden und zwei Konstanten.

Beginnen wir bei den Attributen der Math-Klasse.

Die Klasse bietet dir die Konstanten Pi und E an.

Die Konstante PI ist die Kreiszahl, welche du zum Beispiel zur Berechnung des Kreisumfanges benötigst.
E ist die Eulersche Zahl, welche die Basis eines natürlichen Logarithmuses bildet.

Java Math Konstanten

Wie kannst du nun die Variable bzw. Konstanten verwenden?
Da es sich um Klassenvariablen handelt, rufst du diese direkt am Klassennamen auf.
Du schreibst also:

  • Math
  • Setzt den Punkt für die Punktnation
  • Und dann E oder PI.

Du kannst dir dann diese gebrochene Zahl am Bildschirm ausgeben lassen.


public class KlasseMathDemo {

	public static void main(String[] args) {
		System.out.println("PI beträgt "+Math.PI);
		System.out.println("E beträgt "+Math.E);
	}
}

Oder du speicherst dir diese Zahl in einer Double-Variablen ab.


public class KlasseMathDemo {

	public static void main(String[] args) {
		double piWert = Math.PI; //abspeichern in lokaler Variablen piWert
		double eWert = Math.E; //abspeichern in Variable eWert
		
		System.out.println("PI beträgt "+piWert); //Ausgabe
		System.out.println("E beträgt "+eWert);
	}
}

Und natürlich kannst du diese Zahlen zur Weiterberechnung nutzen.
Lass uns den Umfang eines Kreises berechnen.


public class KlasseMathDemo {
	
	static double berechneKreisUmfang(double radius){
		double kreisUmfang = 2 * Math.PI * radius;
		return kreisUmfang;
	}

	public static void main(String[] args) {
		double kreisUmfang= berechneKreisUmfang(22); //Methodenrückgabe wird gespeichert
		System.out.println(kreisUmfang); //Wert wird ausgegeben
	}
}

Was passiert hier?
Die statische Methode erwartet einen Parameter.
Und anhand dieser übergebenen Zahl wird dann der Umfang berechnet.
Die Methode gibt das Ergebnis zurück.

In der Main Methode wird die Methodenrückgabe in der Variable „kreisUmfang“ gespeichert.
Und dann wird diese Zahl als Bildschirmausgabe zurückgeben.

So das soll zu den Konstanten reichen.
Lass uns jetzt die Methoden anschauen.

Schauen wir uns als nächstes die Methoden der Java Klasse Math einmal an.

Die Methoden sind alle, genau wie die Konstanten, statisch.
Das muss so sein, da ja kein Objekt bzw. Konstruktor angeboten wird.
In den API siehst du ganz links, welche Datentypen die Methoden zurückwerfen.

Java Math Methoden

Um die Methoden aufzurufen, gehst du genauso vor, wie bei den Konstanten.

  • Dazu schreibst du den Klassennamen
  • Setzt wieder die Punktnotation
  • Und zum Schluss rufst du die Methode mit dem Methodennamen auf.

So dann lass uns mal ein bisschen herumschauen, was die Math Klasse zu bieten hat.

So kannst du eine Zufallszahl aus der Java Math Klasse erzeugen.

Für eine Zufallszahl nutzt du die Random()-Methode.

Diese Methode gibt dir einen Wert zwischen 0 und 1 zurück.
Sie liefert dir also eine zufällige Kommazahl.


public class KlasseMathDemo {

	public static void main(String[] args) {
		double zufallsZahl = Math.random();
		System.out.println(zufallsZahl);
	}
}

Wenn du eine Kommazahl bis 100 benötigst, musst du multiplizieren.


public class KlasseMathDemo {

	public static void main(String[] args) {
		double zufallsZahl = Math.random() * 100; //Kommazahl zwischen 0 und 100
		
		System.out.println(zufallsZahl);
	}
}

Und wenn diese Zahl eine ganze Zahl sein soll, musst du casten.


public class KlasseMathDemo {

	public static void main(String[] args) {
		int zufallsZahl = (int) (Math.random() * 100); //Ganze Zahl zwischen 0 und 100
		
		System.out.println(zufallsZahl);
	}
}

Mit Zufallszahlen geht noch viel mehr. 🙂
Deshalb habe ich zu den Zufallszahlen einen separaten Artikel geschrieben.

Lass uns Zahlenreihen analysieren und Absolutwerte berechnen.

Absolutwerte – was ist das?
Absolute Werte werden auch als Betrag einer Zahl bezeichnet.

Der Betrag einer Zahl ist der Abstand zu Null.
Somit hat die Zahl 2 einen Betrag von zwei.
Denn der Abstand zwischen 0 und 2 beträgt zwei.

Die Zahl 5 hat einen Betrag von fünf.
Aber auch die Zahl -5 hat einen Betrag von fünf.
Denn auch hier beträgt der Abstand zur Null 5.

Den Betrag einer Zahl bekommst du über die abs()-Methode.
Und diese wird dir in verschiedenen Variationen angeboten.
Das Ganze ist abhängig vom Datentypen, welche du zurückhaben möchtest.


public class KlasseMathDemo {

	public static void main(String[] args) {
		int a = Math.abs(5); //Betrag von 5 = 5
		int b = Math.abs(-5);//Betrag von - 5 = 5
		double c = Math.abs(-2.4); //Betrag von -2,4 = 2,4
		double d = Math.abs(3);//Betrag von 3 = 3.0
		float e = Math.abs(1.2F); // Betrag von 1,2 = 1,2 
		long f = Math.abs(1700000000);// Long für große Zahlen	
	}
}

Wozu brauchst du den Kram, wenn du nicht zufällig Mathematik studierst?
Um Schwankungen auszuwerten.
Sieh dir einmal diese Tabelle an.

Java Math Umsatzabweichungen

Hier werden in den Monaten 1 bis 11 die Umsatzschwankungen zum Vormonat angegeben.
So eine Analyse könnte für Unternehmen schon wichtig sein.

Jetzt will man sich aber nicht jede 0,005% Schwankung anschauen und analysieren.
Es interessieren Manager in erster Linie die großen Schwankungen.
Also vereinbart man einen Schwellenwert bzw. Grenzwert.

Man sagt sich:
„Wenn die Schwankung größer als 5% bzw. -5% ist.- Dann schauen wir uns das an und analysieren die Gründe.“

Also kann es sein, dass du als Topmanager dann absolute Werte benötigst.
So könnte die Methode dazu aussehen.


public class KlasseMathDemo {

	static void findeGrenzwerte(double[] umsatzArray, double grenzwert) {
		for (int i = 0; i < umsatzArray.length; i++) { 
                     if (Math.abs(umsatzArray[i]) > grenzwert) {
				System.out.println("Monat " + (i + 1) + ": " + umsatzArray[i]);
			}
		}
	}

	public static void main(String[] args) {
		double[] umsatzSchwankungen = new double[11];
		umsatzSchwankungen[0] = 1.5;
		umsatzSchwankungen[1] = 2.0;
		umsatzSchwankungen[2] = 17.5;
		umsatzSchwankungen[3] = -5.8;
		umsatzSchwankungen[4] = 7.0;
		umsatzSchwankungen[5] = -3.1;
		umsatzSchwankungen[6] = 5.2;
		umsatzSchwankungen[7] = 1.5;
		umsatzSchwankungen[8] = 2.1;
		umsatzSchwankungen[9] = 4.3;
		umsatzSchwankungen[10] = -4.8;

		findeGrenzwerte(umsatzSchwankungen, 5);
	}
}

Was macht das Programm?

  • In der findeGrenzwert() Methode wird innerhalb des Rumpfes das übergebene Array durchlaufen.
  • Und ein if-Block schaut sich den Grenzwert an und vergleicht diesen mit dem Absoluten Wert.
  • Die absoluten Grenzwerte werden dann per Bildschirmausgabe zurückgegeben.

Und natürlich kannst du diese Art von Methode immer mal gebrauchen.

  • Sei es bei der Analyse von Börsenkursen.
  • Wenn Schulnoten sich vom Gesamtdurchschnitt abheben.
  • In einer Lauf-App um Abweichungen zwischen Training und Planung zu analysieren.
  • Und überall wo Schwankungen eine Rolle spielen könnten.

Die Betragsmethode kann also doch noch zu deinem Lieblingsspielzeug werden. 🙂
Lass uns zur nächsten Methode kommen.

Die Math-Klasse bietet dir eine Methode zum Wurzelziehen an.

Eigentlich sind es zwei.
Die eine Methode zieht die Quadratwurzel.
Und die andere ist eine Potenzfunktion, welche du als Wurzelfunktion nutzen kannst.

Beginnen wir bei der Quadratwurzel und der Methode sqrt().
Diese erwartet einen double-Datentypen als Parameter.
Und sie liefert dir einen Double zurück.

Du kannst als Parameter allerdings auch einen Integer übergeben.
Die Methode castet dann implizit.


public class KlasseMathDemo {

	public static void main(String[] args) {
		double wurzelEins = Math.sqrt(27.5); //Wurzel aus 27,5 - Double als Argument übergeben
		double wurzelZwei = Math.sqrt(25); //Wurzel aus 25 - Integer als Argument: impliziter Cast
		
		System.out.println(wurzelEins);
		System.out.println(wurzelZwei);
		
	}
}

Für die dritte Wurzel einer Zahl kannst du die cbrt-Methode nutzen.
Auch diese erwartet einen Double und liefert einen zurück.


public class KlasseMathDemo {

	public static void main(String[] args) {
		double wurzelEins = Math.cbrt(27.5); //3-Wurzel aus 27,5 - Double als Argument übergeben
		double wurzelZwei = Math.cbrt(25); //3-Wurzel aus 25 - Integer als Argument: impliziter Cast
		
		System.out.println(wurzelEins);
		System.out.println(wurzelZwei);
		
	}
}

Um Potenzen darzustellen nutzt du die pow()-Methode.
Auch diese erwartet zwei Double und liefert einen Double zurück.


public class KlasseMathDemo {

	public static void main(String[] args) {
		double potenzEins = Math.pow(5.1, 2.4); //5,1 hoch 2,4
		double potenzZwei = Math.pow(5,2); //5 hoch 2 mit impliziten Cast
		
		System.out.println(potenzEins);
		System.out.println(potenzZwei);
		
	}
}

Und wenn du die 4-te Wurzel aus einer Zahl ziehen musst, dann nutzt du diese Funktion ebenfalls.

Wieso?

  • Die Quadratwurzel einer Zahl ist nichts anderes als die Zahl hoch Ein-Halb bzw. 0,5.
  • Die dritte Wurzel einer Zahl ist das Gleiche wie die Zahl hoch ein Drittel.
  • Die 25-Wurzel ist die Zahl hoch 1/25.

Alles klar?
Also los.

Achte bei der Übergabe der Argumente darauf:

  • Dass du den Bruch klammerst.
  • Und mindestens eine Zahl des Bruches als Kommazahl übergibst.

public class KlasseMathDemo {

	public static void main(String[] args) {
		double wurzelEins = Math.pow(25, 0.5); //25 hoch 0,5 ist das Selbe wie die Quadratwurzel aus 25
		double wurzelZwei = Math.pow(25,(1.0/3)); //3 Wurzel aus 25
		double wurzelDrei = Math.pow(25, (1.0/4));//4. Wurzel aus 25
		
		System.out.println(wurzelEins);
		System.out.println(wurzelZwei);
		System.out.println(wurzelDrei);
	}
}

Die Klasse Math stellt dir weiterhin noch einige Methoden zum Runden von Kommazahlen zur Verfügung.

Eine Methode ist round().
Diese rundet eine Kommazahl ab und auf.

Heraus kommt dann eine ganzzahlige Kommazahl.
Bis Komma-Vier wird abgerundet und ab Komma-Fünf wird aufgerundet.


public class KlasseMathDemo {

	public static void main(String[] args) {
		double zahlEins = Math.round(2.5); //liefert 3.0
		long zahlZwei =Math.round(2.5); //liefert 3
		
		System.out.println(zahlEins);
		System.out.println(zahlZwei);
	}
}

Eine zweite Methode zum Runden bietet die Methode rint().
Diese rundet allerdings bei Komma-Fünf in Abhängigkeit von der ganzen Zahl, welche im Bruch steckt.

  • Eine Zahl wie 2,5 besteht aus der Zwei und einem Halben.
    Die Zwei ist eine gerade Zahl.
    Bei gerade Zahlen würde rint() abrunden.
  • Eine Zahl wie 3,5 würde auf vier gerundet werden.
    Die Zahl besteht aus drei und Komma-Fünf. Drei ist ungerade. Deshalb aufrunden.

public class KlasseMathDemo {

	public static void main(String[] args) {
		double zahlEins = Math.rint(2.4); //normales Abrunden bei Komma-Vier = 2
		double zahlZwei = Math.rint(2.5); // gerade deshalb 2,0
		double zahlDrei = Math.rint(3.5); // ungerade deshalb 4.0
		
		System.out.println(zahlEins);
		System.out.println(zahlZwei);
		System.out.println(zahlDrei);
	}
}

Was soll das mit dem gerade Abrunden und ungeraden Aufrunden bringen?

  • Wenn du große Zahlenmengen analysieren sollst.-
    Um dann vielleicht einen Durchschnitt berechnen sollst.
  • Und innerhalb dieser Reihen befinden sich viele Komma-Fünf-Werte – Dann rundet rint() gerechter.
  • Es kommt somit zu besseren Zahlen, da nicht jede Komma-Fünf-Zahl automatisch aufgerundet wird.
  • Die rint() Methode wird deshalb auch als ein gerechtes Runden bezeichnet.

Und noch zwei Methoden zum Runden.
Die Methoden ceil() rundet generell auf und die Methode floor() generell ab.


public class KlasseMathDemo {

	public static void main(String[] args) {
		double zahlEins = Math.ceil(2.1); //Aufrunden 3.0
		double zahlZwei = Math.floor(2.9); //Abrunden 2.0
		
		System.out.println(zahlEins);
		System.out.println(zahlZwei);
	}
}

So das wars.
Natürlich hat die Math-Klasse noch mehr zu bieten.

Aber ich denke Logarithmieren, Winkelfunktionen, Bogenmaß usw – interessiert nur Mathematiklehrer oder -studenten.

Ich höre deshalb an dieser Stelle auf.
Falls du Interesse hast, an allen Methoden, welche die Klasse dir bietet- Dann schau einfach mal selbst in den API Docs nach.

Zusammenfassung:

  • Um dich bei mathematischen Berechnungen zu unterstützen, bietet dir Java eine separate Klasse an.
  • Die Klasse Java Math hat keinen Konstruktor.
    Du kannst somit kein Objekt dieser Klasse erstellen.
  • Aber sie bietet dir einen Haufen statische Methoden zur Berechnung mathematischer Kniffligkeiten an.
  • Ein paar davon, hast du gerade kennengelernt.

Ähnliche Beiträge

Die drei Bestandteile aller Java Klassen

Java Klassen Bestandteile

Java ist eine objektorientierte Programmiersprache. Was heißt das? Ja… Anscheinend hat es etwas mit Objekten zu tun. Also was ist ein Objekt? Ein Objekt ist ein bestimmtes Konstrukt im Programm. Bauen wir ein Spiel. Ein Grafik-Adventure. Du kennst das. Ein Held wird in eine bestimmte Spielwelt hinein gesteckt. Der Held muss mit bestimmten Personen sprechen. […]

Java Übung 21 – Bestimme die Anzahl der Tage

Java Übung Tage

In dieser Java Übung möchte ich, dass du eine Methode schreibst, welche zwei Zahlen entgegennimmt. Und zwar soll die erste Zahl das Jahr sein. Die zweite Zahl soll eine Monatsangabe (1-12) repräsentieren. Was soll die Methode dann machen? Die Methode soll dir die Anzahl der Tage des jeweiligen Monats zurückgeben. Achte auf Schaltjahre.

Das Java Leben ist einfacher mit For-Schleife

Java For Schleife Aufbau

In einem anderen Artikeln habe ich bereits über Schleifen in Java gesprochen. In diesem Artikel möchte ich dir eine ganz besondere Schleife vorstellen. Warum ist diese so toll? Sie hat einen integrierten Schleifenzähler. Die Schleife zählt also bei jedem Durchlauf automatisch mit. Aber dazu gleich mehr…. Lass uns einmal so eine For Schleife anlegen.

Drei Möglichkeiten um Java Objekte zu zerstören

Java Objekte zerstören

Java Objekte leben genau solange, wie eine Referenzvariable auf sie zeigt. Wenn dieser Zeiger nicht mehr existiert, wird dieses Objekt aufgeben. Und wenn dieses Objekt erst einmal aufgegeben wurde, dann kommt der Garbage Collector und entsorgt dieses. Aber wie kannst du nun am Sinnvollsten Objekte aufgeben? Lass es uns herausfinden.

Die vier verschiedenen Zahlensysteme in der Java Programmierung

Java Zahlensysteme

Java Zahlensysteme – Was soll das? In sämtlichen Programmiersprachen werden Zahlen in Variablen abgespeichert. Wenn du dir die einzelnen primitiven Datentypen in Java einmal anschaust – wirst du feststellen – dass die Masse der Datentypen Zahlen annehmen und speichern können. Zahlen und die Mathematik dahinter spielen in der Programmierung eine sehr große Rolle. Ganz am […]

Die mathematischen Grundlagen des Dezimalsystems für Java Programmierer

Java Dezimalsystem Mathematik Programmierer

Bei der Java Programmierung benötigst du Kenntnisse über das Dezimalsystem. Allein schon für die technische Umsetzung beim Runden einer Zahl. Oder du möchtest den Kehrwert bzw. den Umkehrwert einer Zahl im Programm bestimmen lassen. Aber auch für das Herausfinden des Stellenwertes – also wieviel Stellen hat eine Zahl – benötigst du das Grundwissen des Dezimalsystems. […]

Java Vererbung – Die Hierarchien richtig planen

Java Vererbung Hierarchien

Java Vererbung hat nichts mit Biologie zu tun. Die Genetik besagt, dass bestimmte Merkmalsausprägungen von den Eltern auf die Kinder übergehen. Solche Merkmalsausprägungen sind: die Hautfarbe die Haarfarbe die spezifische Größe und weitere körperliche Merkmale. Und in Java – was ist da Vererbung? Lass es uns herausfinden. Was erwartet dich in diesem Beitrag? Zuerst schauen […]

Java lernen – 10 nützliche Tipps für Java Anfänger

Java Lernen Anfänger

Wenn du die Programmiersprache Java lernen möchtest, bist du hier prinzipiell erst einmal richtig. Und wenn du es wirklich ernst meinst und in die Java Programmierung einsteigen möchtest, solltest du auch meinen kostenlosen Java Kurs beanspruchen. Wenn du dabei bist, bekommst du: Eine Lektion pro Woche zu den Basics. Hier geht es um die ersten […]

So lassen sich Java Strings in char zerlegen

Java Strings zerlegen char

Java Strings sind Zeichenketten. Und diese Zeichenketten lassen sich aufsplitten und in ihre Einzelteile zerlegen. Ich möchte dir in diesem Beitrag Möglichkeiten vorstellen, wie du Strings in Character-Datentypen zerlegen, extrahieren und die Einzelteile in Arrays speichern kannst.