Arithmetische Operatoren + - * /  Modulo

Ein arithmetischer Operator stellt die Verknüpfung zwischen einem Operanten mit den Operatoren dar.

Also Addition (+), Subtraktion (-), Multiplikation (*) und die Division (/).

Zur Bestimmung eines Restwertes (bei der Division) gibt es noch den Operator Modulo (%).

Operator

Beispiel

Ergebnis

+

a + b

Addiert a und b

-

a – b

Subtrahiert b von a

*

a * b

Multipliziert a und b

/

a / b

Dividiert a durch b

% (Modulo)

a % b

Liefert den Rest bei der ganzzahligen Division a / b

 

Etwas näher werden wir die Division und den Modulo-Operator betrachten. 

Der Operator ( / ) liefert als Ergebnis den Quotienten aus Dividend (linke Seite) und Divisor (rechte Seite) aus Ganzzahlen und Fließkommazahlen.

Bei einer Ganzzahldivision wird das Ergebnis zu 0 (Null) hin gerundet!

 

10 / 3 = 3.333333333333334 (als Fließkommazahl)

und

10 / 3 = 3 (als Ganzzahl) - hier wird die Nachkommastelle auf null (also 3.0) gerundet und als Ganzzahl ausgegeben. Somit ist das Ergebnis nicht 3.33333333333334 sondern 3!

Hier wird der Datentyp durch einen der Operanten bestimmt. Dividend oder Divisor muss vom Typ double sein, wenn das Ergebnis vom Typ double sein soll.

 

Beispiel:

System.out.println (10.0 / 3);   // = 3,3333333333333334
System.out.println (10 / 3.0);   // = 3,3333333333333334
oder
System.out.println (1 / 3);      // = 0

 


Division durch Null

Wie wir es aus der Schule kennen, ist eine Division durch 0 nicht definiert. In Java ist das etwas anders.

Eine Division durch 0 als Ganzzahl bringt uns eine Fehlermeldung (ArithmeticException)

 

Beispiele:

System.out.println(2/0);   //ArithmeticException: / by zero

Eine Division durch 0 als Gleitkommazahl bringt uns keine Fehlermeldung. Hier erhalten wir als Ergebnis Infinity (Unendlich) oder NaN (Not a Number)

System.out.println(2.0/0.0);   //Infinity

 


Der Restwert-Operator % (Modulo)

Eine Ganzzahldivision kann wie im Fall 7/2 mit einem Rest enden. In diesem Fall gibt es den Rest 1. Diesen Rest liefert der Restwert-Operator oft auch Modulo genannt.

 

Beispiele:

7/2 = 3 Rest 1

da: 3*2 = 6 + Rest von 1 = 7  (Modulo liefert uns hier den Wert 1)

System.out.println( 7 % 2 );  // 1

14/3 = 4 Rest 2

da: 4*3 = 12 + Rest von 2 = 14  (Modulo liefert uns hier den Wert 1)

 

Die Division und der Restwert richten sich nach der Formel: int(a/b)*b + (a%b) = a

System.out.println(7%2);    //1
System.out.println(17%6);   //5
System.out.println(27%4);   //3
System.out.println(7.0%2);  //1.0
System.out.println(7%2.0);  //1.0

 


Modulo % mit negativen Zahlen

Nur der erste Operand (Dividend) definiert das Vorzeichen des Restes und niemals der zweite (Divisor)

System.out.println(-7%2);     //-1
System.out.println(17%-6);    // 5
System.out.println(-27%4);    //-3
System.out.println(-7.0%-2);  //-1.0
System.out.println(7%-2.0);   // 1.0

 

Der Modulo Operant eignet sich zum Beispiel hervorragend für einen Test auf gerade oder ungerade Zahlen.

zahl !=0    //testet, ob zahl gerade oder ungerade ist

ist zahl gerade (zum Beispiel: 4/2 = 2 Rest 0) ist das Ergebnis false (Bedingung nicht erfüllt, da nur dann wahr (true), wenn das Ergebnis != (ungleich) 0 ist.