5 Stimmen

Steht Java im Widerspruch zu sich selbst?

Soll ich erklären, dass Math.round(1/2) in Java ein int oder ein double sein? Wenn beides in Ordnung ist, was ist dann richtiger?

Warum sagt mir Eclipse außerdem, dass Math.round(1/2) = 0,0 ist, während Math.round(0,5) = 1,0 ist?

Für jede Hilfe wären wir dankbar!

14voto

Walter Harley Punkte 156

Der Compiler beginnt mit der Auswertung des Ausdrucks 1/2. Diese beiden Zahlen sind Ganzzahlen, also wird mit Ganzzahlen gerechnet. Bei Ganzzahlen ist 1 geteilt durch 2 gleich 0. Anschließend wird die 0 in einen Double-Wert umgewandelt, um ihn an Math.round() zu übergeben.

Wenn Sie eine korrekte Antwort wünschen, müssen Sie in Paschalwerten angeben: Sie können dies tun, indem Sie 1,0/2,0 anstelle von 1/2 verwenden.

6voto

Kerrek SB Punkte 445528

1/2 ist 0, da es sich um einen ganzzahligen Ausdruck handelt.

Wenn Sie den Fließkommawert benötigen, sagen Sie 1.0/2.0 (oder einfach 1./2 ).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X