Erwarten Sie, dass ein moderner elektronischer Taschenrechner Ihnen für den Ausdruck  (31.5 - 12)/4.1  die gleiche Lösung wie Java gibt?

Eine gute Antwort wäre:

Ja. Die Bedeutung der Operatoren und Klammern ist bei elektronischen Taschenrechnern und Java ungefähr die gleiche. Aber Java führt Ganzzahl- und Gleitpunkt-Mathematik durch und das kann einen Unterschied ausmachen.

Merkwürdige Ganzzahl-Arithmetik

Der Divisionsoperator "/" bedeutet Ganzzahl-Division, wenn auf beiden Seiten von ihm eine Ganzzahl steht. Wenn auf einer oder beiden Seiten eine Gleitpunktzahl steht, dann bedeutet das Gleitpunkt-Division. Das Ergebnis einer Ganzzahl-Division ist immer eine Ganzzahl: Wenn das exakte Ergebnis einen Dezimalteil hat, wird dieser Teil des Ergebnisses fallengelassen (es wird nicht gerundet).

Es gibt einen Unterschied zwischen dem was Java und ein Taschenrechner tun wird. Ein Taschenrechner wird Gleitpunkt-Arithmetik für diesen Ausdruck verwenden:

7/2

Java wird das als Ganzzahl-Arithmetik betrachten und Ihnen das folgende geben:

7/2 = 3

Das ist für sich betrachtet leicht zu erkennen, aber hier ist ein verwirrenderer Fall der gleichen Art:

1.5 + 7/2

Die Division wird zuerst durchgeführt, da "/" eine höhere Präzedenz als "+" hat. Das Ergebnis, 3, ist eine Ganzzahl. Jetzt wird die Gleitpunktzahl 1.5 zur Ganzzahl 3 addiert, um die Gleitpunktzahl 4.5 zu bekommen.

Ganzzahl-Arithmetik kann in Teilen eines Ausdrucks verwendet und in anderen nicht verwendet werden, auch wenn der letzte Wert des Ausdrucks eine Gleitpunktzahl ist. Die meisten Programmiersprachen tun das. Sie mögen es glauben oder nicht, aber es ist vorteilhaft das Java auf diese Weise arbeitet. Es wäre schrecklich, wenn das was in der Mitte einer Berechnung getan wird vom Endergebnis abhängig wäre.

FRAGE 4:

Was ist das Ergebnis der Auswertung des folgenden Ausdrucks:

1/2 + 1/2
Inhaltsverzeichnis