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

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.

Java Übung 16 – Bestimme den größten gemeinsamen Teiler

Java Übung Teiler

In dieser Java Übung möchte ich, dass du den größten gemeinsamen Teiler zwei Zahlen ermittelst. Ich möchte, dass du das Ganze mit einer while-Schleife umsetzt. Und wie? Du legst eine neue Klasse „GGT“ (größter gemeinsamer Teiler) an. In diese Klasse implementierst du eine Klassenmethode „berechneGGT“. Diese erwartet zwei Argumente vom Datentyp Integer.

Java Übung 26 – Das erste kleine Java Spiel

Java Übung Zahlenraten

In dieser Java Übung geht es darum ein kleines Java-Spiel zu erstellen. Und zwar Zahlen raten. Was kannst du dir darunter vorstellen? Du gibst einen bestimmten Wertebereich an. Zum Beispiel 0 bis 100. Und das Java Programm erstellt eine Zufallszahl in diesem Bereich. Dann fordert dich das Programm auf, die Zahl zu raten. Du gibst […]

So richtest du einen Schreibschutz für deine Java Variablen ein

Stell dir vor: Du hast erfolgreich dein erstes Programm für die Personalabteilung aufgesetzt. Du hast deine ersten 1000 Datensätze schön sauber angelegt. Und nun kommt dein Kollege und überschreibt die Vornamen der ersten 100 Mitarbeitern. Na schöne Sch…. 🙂 Wie kann das passieren? Wie kann man das verhindern? Du brauchst eigentlich nur deine Java Variablen […]

So organisierst und verwaltest du ganz bequem deine Java Projekte

Du kennst das auch. Denn du bist ja fleißig. Und weil du so fleißig bist, hast du mitunter auch mehrere Java Projekte gleichzeitig laufen. Und dann kommt es vor, dass du enorm viele Java Projekte am Laufen hast. Und dein Package-Explorer wird extrem unübersichtlich. In diesem Beitrag möchte ich dir zwei Varianten vorstellen, wie du […]

So einfach lassen sich Java Strings umkehren

Java Strings umkehren

Kennst du noch das Lied „ANNA“ von Freundeskreis? Da hieß es: Du bist von hinten, wie von vorne A-N-N-A. Solche Namen oder Wörter, welche von hinten nach vorne gelesen – die gleiche Bedeutung haben, nennt man Palindrome. Anna, Ehe oder Ebbe sind recht kurze Palindrome. Aber auch längere zusammengesetzte Palindrome kennt die deutsche Sprache: Regallager […]

Der bedeutende Unterschied zwischen Klassenvariablen und Instanzvariablen

Java Klassenvariablen

Bei der Java Programmierung unterscheidet man drei Arten von Variablen. Als erste Gruppe sind die lokalen Variablen zu nennen. Auf diese gehe ich in einem separaten Artikel ein. Mich interessieren die zwei anderen Variablentypen. Zum einen existieren Klassenvariablen. Und dann sind da noch die Instanzvariablen. Wo liegt der Unterschied? Instanzvariablen stehen einem Objekt zur Verfügung. […]

So lassen sich Java Arrays kopieren

Java Arrays kopieren

Java Arrays kopieren oder klonen…. Was heißt das eigentlich? Eine Kopie ist eine Reproduktion bzw. die Nachbildung eines Originals. Somit ist jede Fotographie – die Abbildung einer bestimmten optischen Wirklichkeit, zu einem festen Zeitpunkt. Die Kopie einer Buchseite ist das optische Abbild dieser spezifischen Buchseite – auch zu einem festen Zeitpunkt. Wichtig in diesem Zusammenhang […]

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.