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

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.

So kannst du Java Methoden überladen

Java Methoden überladen

Im Mittelalter war es üblich, dass Könige oder Adlige Briefe durch ein Siegel verschlossen. Das Siegel hatte die Aufgabe den Inhalt des Briefes vor dem gewaltsamen Öffnen zu schützen. Außerdem hatte das Siegel die Aufgabe einen Eigentumsnachweis sicher zu stellen. Und jeder, welcher das Siegel des Königs sah, wusste: „Das königliche Siegel – Oh ein […]

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 […]

Zwei smarte Möglichkeiten eine Java Zufallszahl zu erzeugen

Java Zufallszahl

Java Zufallszahl – Wieso? In der Java Programmierung benötigst du immer wieder einmal Zufallszahlen. Du möchtest deine Software mit Daten testen und dir keine Zahlen ausdenken. Du benötigst Stichproben, welche ein reales Verhalten simulieren. Du hast ein Spiel entworfen und die Akteure sollen mit zufälligen aber unterschiedlichen Größen, Rüstungsleveln usw. auftreten. Die Einsatzmöglichkeiten für Zufallszahlen […]

Java Übung 18: Berechne die Fakultät

Java Übung Fakultät

In dieser Java Übung geht es um die Fakultät aufeinander folgender Zahlen. Für alle, bei denen der Mathe-Unterricht genauso lange her ist, wie bei mir: 🙂 Die Fakultät ist das Produkt aufeinander folgender natürlicher Zahlen. Zum Beispiel: Die Fakultät von 2 ist: 1*2=2 Die Fakultät von 5 ist: 1*2*3*4*5=120 So – ich hoffe, dass ich […]

So nutzt du Methoden aus der Java String Klasse

Java Strings Methoden

In einen der letzten Beiträge haben wir darüber gesprochen, dass Java Strings – Objekte sind. Dass Strings in allen Programmen äußerst häufig vorkommen Und dass sich deshalb Referenzvariablen String-Objekte im String Pool teilen. Das Konzept hinter dem String-Pool ist die Teilung der Ressourcen. Und das bedeutet: Weniger Objekte – mehr Speicher Mehr Speicher – bessere […]

So kannst du deine Eclipse Oberfläche anpassen

Eclipse anpassen

In diesem Beitrag möchte ich dir zwei ganz nette Features von Eclipse vorstellen. Es geht um Views und um Perspektiven. Wie du schon weißt, besteht Eclipse aus einer grafischen Oberfläche. Und in dieser Oberfläche stehen dir verschiedene Views zur Verfügung. Was ist so ein View?

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 lernen durch ständiges Testen – Nutze die Testumgebung von Eclipse

Java Programmierung lernen

Probieren geht über studieren Wenn du wirklich Java Programmierung lernen möchtest, dann solltest du Java nicht aus einem Buch lernen. Du solltest auch nicht strikt von dieser oder anderen Webseiten lernen. Etwas wirklich zu lernen, setzt die Bereitschaft voraus, etwas zu probieren. Denn nur durch eigenes Probieren gelangst du zum Wesentlichen. Durch Probieren wirst du […]

Der Java Datentyp boolean im Interview

Java boolean

Nein, ich bin nicht verrückt. Aber… Neulich traf ich zufällig den Java Datentyp boolean. 🙂 Er erklärte sich bereit, mir ein Interview zu geben. In diesem Interview geht es um die Werte, welcher dieser Wertetyp annehmen kann. Und in diesem Zusammenhang geht es auch um Logik. Also lassen wir uns doch die Logik vom direkten […]