Skip to main content

10 ganz nützlichen Feature der Klasse Java Math


java programmierung klasse 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