Die Addition in Java (Die Addition in Java, Plus, Summe, Summen, Additionsoperator), Lektion, Seite 722419
https://www.purl.org/stefan_ram/pub/addition_java_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Die Addition »…+…« in Java 

Einführendes Beispiel

Der Additionsoperator ist das Pluszeichen »+«. Eine Summe kann in einem Programm also mit der aus der Schule gewohnten Schreibweise als Ausdruck verwendet werden.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 1 + 1 ); }}
java.lang.System.out
2
Java 
1 + 1
auf deutsch:
● „1 und 1“
● „1 plus 1“
● „die Summe von 1 und 1“

Weitere Beispiele

Beispiel zur Addition von int-Werten

Das folgende Beispiel zeigt eine Addition zweier int-Werte.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 1 + 2 ); }}
Protokoll
3

Beispiel zur Addition von double-Werten und int-Werten

Die folgenden Beispiele zeigen die Addition eines int- und eines double-Werts.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 1 + 1. ); }}
Protokoll
2.0
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 1. + 1 ); }}
java.lang.System.out
2.0

Syntax

Ist a  ein Additivausdruck und m  ein Multiplikativausdruck, so ist »a +m « wieder ein Additivausdruck, die Summe  von a  und m. Dabei wird a  auch Augend  und m  Addend  genannt.

Wir erweitern das Syntaxdiagramm für Ausdrücke um den Additionsoperator »+« (Additivausdruck).

Syntax (Syntaxdiagramm)

Primaerausdruck
.-. .----------. .-.
--->.--->( ( )--->| Ausdruck |--->( ) )--->.--->
| '-' '----------' '-' ^
| .----------. |
'------------>| Literal |-------------'
'----------'

Vorzeichenausdruck
.--------------------.
---.------------>| Primaerausdruck |----.---->
| '--------------------' ^
| .-. .--------------------. |
'--->( - )--->| Vorzeichenausdruck |----'
| '-' '--------------------' |
| .-. .--------------------. |
'--->( + )--->| Vorzeichenausdruck |----'
'-' '--------------------'

Multiplikativausdruck
.-----------------------.
---.--->| Vorzeichenausdruck |--------------------------------------.--->
| '-----------------------' ^
| .-----------------------. .-. .--------------------. |
'--->| Multiplikativausdruck |--->( * )--->| Vorzeichenausdruck |---'
| '-----------------------' '-' '--------------------' |
| .-----------------------. .-. .--------------------. |
'--->| Multiplikativausdruck |--->( / )--->| Vorzeichenausdruck |---'
'-----------------------' '-' '--------------------'

Additivausdruck
.-----------------------.
---.--->| Multiplikativausdruck |-----------------------------------------.--->
| '-----------------------' ^
| .-----------------------. .-. .-----------------------. |
'--->| Additivausdruck |--->( + )--->| Multiplikativausdruck |---'
'-----------------------' '-' '-----------------------'

Ausdruck
.-----------------.
--->| Additivausdruck |--->
'-----------------'

Typanforderung

Die Typanforderungen der Addition sind wie die der Division und Multiplikation.

Typregeln

Die Typregeln der Multiplikation sind wie die der Division und Multiplikation.

Auswertung

Bei der Auswertung einer Addition werden zunächst beide Operanden ausgewertet. Der Wert das Additivausdrucks ist dann die Summe  der erhaltenen Werte der Operanden.

Hat mindestens ein Operand den Typ »double«, so erfolgt die Addition mit Nachkommastellen.

(Falls das mathematisch korrekte Ergebnis im Wertebereich des Datentyps des Ergebnisses nicht darstellbar ist, wird an Stelle des mathematisch korrekten Ergebnisses ein Wert aus dem Wertebereich des Datentyps des Ergebnisses verwendet. Das Ergebnis ist dann nicht  mathematisch korrekt. Die Details dieses Verfahrens sollen an dieser Stelle des Kurses noch nicht vertieft werden.)

Näherungseffekte

Der interne Wert von »0.1«

Wir hatten schon erwähnt, daß der interne Wert von »0.1« nicht genau gleich ‹ 0,1 › ist.

Ausgabe des Wertes eines Ausdrucks

Auswertung Ausgabe
Ausdruck -----------------------> Wert -----------------------> Textdarstellung

0.1 0.1000000000000000055511151231257827021181583404541015625 0.1
(0x1.999999999999ap-4)

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 0.1 ); }}
Protokoll
0.1

Der interne Wert von »0.2«

Auch der interne Wert von »0.2« ist nicht genau gleich ‹ 0,2 › ist.

Ausgabe des Wertes eines Ausdrucks

Auswertung Ausgabe
Ausdruck -----------------------> Wert -----------------------> Textdarstellung

0.2 0.200000000000000011102230246251565404236316680908203125 0.2
(0x1.999999999999ap-3)

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 0.2 ); }}
Protokoll
0.2

Der interne Wert von »0.1+0.2«

Bei der Summierung der beiden internen Werte ergibt sich nicht genau ‹ 0,3 › ist, da erstens schon die beiden Ausgangswerte etwas zu groß sind und die Fehler sich addieren und zweitens selbst diese Summe selber nicht genau darstellbar ist und angenähert wird. Dadurch weicht das Ergebnis so sehr von «0.3», daß selbst die vereinfachende Ausgabedarstellung nicht mehr »0.3« ist.

Ausgabe des Wertes eines Ausdrucks

Auswertung Ausgabe
Ausdruck -----------------------------> Wert -----------------------------> Textdarstellung

0.1 + 0.2 0.3000000000000000444089209850062616169452667236328125 0.30000000000000004
(0x1.3333333333334p-2)

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 0.1 + 0.2 ); }}
Protokoll
0.30000000000000004
Kontrollrechnung

0.1000000000000000055511151231257827021181583404541015625 0x1.999999999999ap-4 Wert von 0.1 in Java
+ 0.200000000000000011102230246251565404236316680908203125 0x1.999999999999ap-3 Wert von 0.2 in Java
= 0.3000000000000000166533453693773481063544750213623046875 korrekte Summe obiger Werte

0.3000000000000000444089209850062616169452667236328125 0x1.3333333333334p-2 Wert von 0.1+0.2 in Java

0.299999999999999988897769753748434595763683319091796875 0x1.3333333333333p-2 Wert von 0.3 in Java

Die korrekte Summe von «0.1» und «0.2» liegt genau in der Mitte zwischen «0x1.3333333333333p-2» und «0x1.3333333333334p-2». Java  wählt das größere Ergebnis, obwohl das kleinere näher an ‹ 0,1+0,2 › liegt.

Kontrollrechnung

0.3000000000000000444089209850062616169452667236328125 0x1.3333333333334p-2 Wert von 0.1+0.2 in Java
- 0.3000000000000000166533453693773481063544750213623046875 korrekte Summe von 0.1 und 0.2
= 0.0000000000000000277555756156289135105907917022705078125

0.3000000000000000166533453693773481063544750213623046875 korrekte Summe von 0.1 und 0.2
- 0.299999999999999988897769753748434595763683319091796875 0x1.3333333333333p-2 Wert von 0.3 in Java
= 0.0000000000000000277555756156289135105907917022705078125

Das Ergebnis von »0.1 + 0.2« ist um „ein Bit in der letzten Stelle“ zu groß (»4« statt »3« in der Darstellung »0x1.3333333333334p-2«).

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 0x1.3333333333334p-2 ); }}
Protokoll
0.30000000000000004

Der interne Wert von »0.3«

Der Wert »0.3« beziehungsweise »0x1.3333333333333p-2« hat hingegen die Ausgabedarstellung »0.3«.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 0.3 ); }}
Protokoll
0.3
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 0x1.3333333333333p-2 ); }}
Protokoll
0.3

Übungsfragen

?   Übungsfrage

Bei den folgenden Fragen sind auch „beides“ oder „keines von beidem“ Antwortmöglichkeiten.

Ist »1+2« ein Additiv- oder ein Multiplikativausdruck?

Ist »1*2« ein Additiv- oder ein Multiplikativausdruck?

Ist »1+2*3« ein Additiv- oder ein Multiplikativausdruck?

Ist »1*2+3« ein Additiv- oder ein Multiplikativausdruck?

Ist »1*(2+3)« ein Additiv- oder ein Multiplikativausdruck?

Kopie des weiter oben stehenden Syntaxdiagramms

Primaerausdruck
.-. .----------. .-.
--->.--->( ( )--->| Ausdruck |--->( ) )--->.--->
| '-' '----------' '-' ^
| .----------. |
'------------>| Literal |-------------'
'----------'

Vorzeichenausdruck
.--------------------.
---.------------>| Primaerausdruck |----.---->
| '--------------------' ^
| .-. .--------------------. |
'--->( - )--->| Vorzeichenausdruck |----'
| '-' '--------------------' |
| .-. .--------------------. |
'--->( + )--->| Vorzeichenausdruck |----'
'-' '--------------------'

Multiplikativausdruck
.-----------------------.
---.--->| Vorzeichenausdruck |--------------------------------------.--->
| '-----------------------' ^
| .-----------------------. .-. .--------------------. |
'--->| Multiplikativausdruck |--->( * )--->| Vorzeichenausdruck |---'
| '-----------------------' '-' '--------------------' |
| .-----------------------. .-. .--------------------. |
'--->| Multiplikativausdruck |--->( / )--->| Vorzeichenausdruck |---'
'-----------------------' '-' '--------------------'

Additivausdruck
.-----------------------.
---.--->| Multiplikativausdruck |-----------------------------------------.--->
| '-----------------------' ^
| .-----------------------. .-. .-----------------------. |
'--->| Additivausdruck |--->( + )--->| Multiplikativausdruck |---'
'-----------------------' '-' '-----------------------'

Ausdruck
.-----------------.
--->| Additivausdruck |--->
'-----------------'

?   Bezeichnung eines Ausdrucks ⃗

Würden Sie den Ausdruck »2 + 4/2« als eine Summe oder als einen Quotienten bezeichnen? Begründen Sie ihre Wahl!

?   Unäre und binäre Operatoren _

Wie viele unäre und wie viele binäre Operator finden sich im Ausdruck »+ 2 + + 3«?

Operanden ⃗

Welcher der folgenden Ausdrücke kommen als Operanden im Ausdruck »8/2+2« vor?

Liste von Ausdrücken
»8/2«    Anton
»2+2«    Berta
»8/2+2«  Cäsar
»2«      Berta

Benennung eines Ausdrucks *

Wir benennen einen Ausdruck immer nach dem  Operatorzeichen, welches in keinem Teilausdruck (Operanden) vorkommt. Beispielsweise steht das Operatorzeichen »+« in dem Ausdruck »2*2+5« in keinem Operanden, daher ist der gesamte Ausdruck eine Summe und kein Produkt. Das Zeichen »*« findet sich in dem Operanden »2*2« und wird daher nicht zur Benennung des gesamten Ausdrucks »2*2+5« verwendet. Betrachtet man aber den Ausdruck »2*2« isoliert, so handelt es sich um eim Produkt.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722419 stefan_ram:722419 Die Addition in Java, Plus, Summe, Summen, Additionsoperator Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722419, slrprddef722419, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/addition_java_de