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

So nutzt du die While Schleife in deinem Java Programm

Java While Schleife

Manchmal ist es wichtig, Dinge einmal öfter zu tun. Bei der Java Programmierung kann es schonmal sein, dass du einen Code mehrfach ausführen lassen musst. Zum Beispiel die Zahlen eins bis zehn. Ein Java Programm, welches die Zahlen eins bis zehn wiedergibt. Na wie wäre das? Der Java Code dazu würde so aussehen: public class […]

Den Java Vererbungsbaum nach dem Ist-Es-Prinzip richtig entwerfen

Java Vererbungsbaum

Vererbungsbaum in Java – klingt erstmal komisch. Dennoch wird dies so bezeichnet. Gemeint sind damit – die einzelnen Hierarchiestufen oder Vererbungsebenen – von der Superklasse bis runter zu den Kindklassen. Wie sieht das nun konkret aus? Vererbung bedeutet: Du definierst einen allgemeinen Typen – zB. Möbel Und dann implementierst du eine Unterklasse, welche die Oberklasse […]

So verwendest du Inkrement und Dekrement Operatoren in deinen Java Programmen

Java Operatoren

In diesem Beitrag geht es um Java Operatoren. Ich möchte dir gern zwei neue Operatoren vorstellen. Diese nennen sich Inkrement und Dekrement. Ja was heißt das? Inkrementieren bedeutet eine schrittweise Erhöhung einer Zahl. Und dementsprechend bedeutet Dekrementieren: Die schrittweise Verminderung einer Zahl. Wozu brauchst du das? Stell dir vor. Du bekommst eine Liste mit Namen […]

So verwendest du den Java Oder Operator

Java Oder Operator

Kennst du das auch aus deiner Schulzeit? Du schreibst eine Klassenarbeit in irgendeinem Fach. Nehmen wir einfach mal an – Mathe. Jetzt bist gerade fertig mit deiner Arbeit. Und zu Hause wirst du gefragt: „Und wie lief es?“ Du antwortet:“ Ganz gut. Es wird bestimmt eine Eins oder eine Zwei.“ Drei oder vier Tage später […]

So kannst du in den Java Klassen Attribute anlegen

Java Klassen Attribute

Die bisherigen Java Klassen in unserem Einführungsbeispiel besitzen noch keine Attribute. Das ändern wir und legen diese jetzt an. In diesem Beitrag erfährst du: Warum Variablen in deinen Klassen eine entscheidende Rolle spielen. Was es bedeutet eine Variable zu deklarieren. Wo du Attribute in den Java Klassen anlegen darfst und wo nicht. Wie du durch […]

Lassen wir Java rechnen – Die Rechenoperationen für Variablen

Java rechnen

Ich liebe Mathe. In der Biographie „Der Mann, der die Zahlen liebte“, stellt Paul Hoffmann das Mathematikgenie Paul Erdös vor. Erdös war eines der größten Genies des 20 Jahrhunderts. Er arbeitete mit zahlreichen Wissenschaftlern zusammen und verfasste durchschnittlich mehr Publikationen im Jahr, als andere Mathematiker im ganzen Leben. Da Erdös sich mit sehr vielen Theoremen […]

So kannst du Eclipse installieren

Eclipse installieren

Das Schöne an Eclipse ist, es läuft auf sämtlichen Betriebssystemen. Eclipse wird einfach auf der Webseite des Herstellers herunter geladen und kann dann installiert werden. Dabei stehen dir verschiedene Versionen zur Verfügung.

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

So kannst du Instanzen in Java Klassen zählen

Wie kannst du die Instanzen der Java Klassen zählen? Ganz einfach. Am besten ist es, wir bleiben beim Einführungsbeispiel zu den Java Klassen. Und ich wähle die Klasse „Monster“. Um es einfach zu halten, soll auch der Programmstart durch die Klasse erfolgen. Die Klasse bietet somit eine main-Methode an.

So legst du Utility Klassen in Java an

Java Utility Klassen

Utility Java Klassen – was ist das? Man nennt diese auch Hilfsklassen von Java. Diese Utility Klassen sind Java Klassen, welche lediglich Methoden und Konstanten anbieten. Am Beispiel: Die Klasse Math ist so eine klassische Utility Klasse. Wozu braucht man solche Klassen? Diese Klassen sind so etwas wie ein Werkzeugkoffer für jedes Java Programm. Hier […]