Wieso ist das Ergebnis dieser Java-Rechenoperation 0?

...komplette Frage anzeigen

6 Antworten

Ich würde bei so etwas immer ".0" hinter ganzen Zahlen schreiben, denn sonst werden die Zahlen wie Integer behandelt und Integer geteilt durch Integer als Integer zurück gegeben. Also z. B. (10.0/3.0 - 3) * 123...

Als Ganzzahl gerechnet entstünde 3,33333 - 3 = 0, weil die Nachkommastellen abgeschnitten werden würden.

Antwort bewerten Vielen Dank für Deine Bewertung

Ich würd eher sagen, dass der Datentyp "long" ist. 1234567891234 ist für einen Integer viel zu groß. Dann könnte man allerdings auch genauso gut schon fast "float" oder "double" als Datentyp nehmen... die Aufgabe ist mMn. verwirrend, die richtige mathematische Begründung hast du hier ja in den anderen Antworten.

Antwort bewerten Vielen Dank für Deine Bewertung

Tatsächlich würde das ganze nicht Compilieren da 1234567891234 zu groß für Integer ist aber auch nicht als Double/Long markiert ist.

Die Begründung deines Profs/Lehrers warum 0 raus kommt ist:

( 10 / 3 - 3)  sind alles Integer Werte da nichts andere Ausgewiesen wurde.

In Datentypen gilt:

Integer/Integer = Integer (unter Verlust der Gleitzahlen.)

Also sind wir bei:

3 - 3 was 0 ist.

0*1234567891234 = 0.

Die Frage die sich jetzt noch stellt welcher Datentyp.

Ich denke mal Aufgabe war es jetzt zu erkennen das "1234567891234" als Double markiert sein muss und zu sagen: Integer Operator Long und Long Operator Integer führen zu einer Konvertierung des Integers zu Long. Das Ergebnis ist auch Long obwohl es auch in ein Integer passen würde. Der Prof/Lehrer wird gedacht haben das "Etwa nötige Typ Angaben müssen Sie sich denken." auf Grund der Aufgabenstellung klar ist und nicht mehr als extra Hinweis nötig ist. (Tatsächlich hätte  das ja auch den letzten Schüler/Studenten drauf gestoßen das 1234567891234 wohl zu groß sein wird.)

Antwort bewerten Vielen Dank für Deine Bewertung

1. der Typ ist Integer, weil du nur mit Integer rechnest!

2.:

10/3 ist 3 und nicht 3,333333!!!

3-3 ist folglich 0

und 0 mal irgendwas bleibt 0

Das Ergebnis 0 ist folgerichtig und logisch!

Antwort bewerten Vielen Dank für Deine Bewertung

ich hab es am Computer getestet und das stimmt auch

Nanu? Bei mir kommt eine Fehlermeldung:

error: integer number too large: 1234567891234

Die "Java® Language Specification" sagt dazu in Kapitel 3.10.1:

It is a compile-time error [...] if a decimal literal of type int is larger than 2147483648 (2³¹).

Antwort bewerten Vielen Dank für Deine Bewertung
maxbax08 13.01.2016, 19:09

deshalb Double und nicht Integer

0
ralphdieter 13.01.2016, 19:16
@maxbax08

Nur, wenn ein Dezimalpunkt oder 'e' angegeben ist. Auch für long muss zwingend ein 'L' oder 'l' dahinter. Alles andere ist syntaktisch falsch. Dein Prof hätte ebenso gut nach dem Wert von :-P fragen können!

0

Ohne java zu kennen: datentyp ist integer.
Klammer zuerst: 10/3, wird auf 3 abgerundet, 3-3=0; 0*blablabla=0

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?