3 Stimmen

Was ist an dieser Aufteilung falsch?

Hier ist der Code:

class testsum
{ 
    public static void main(String arg[]) 
    {
        double sum=0; 
        double fraction;
        fraction=-1/9;
        System.out.println("fraction: "+fraction); 
        fraction=-1; 
        fraction=fraction/9; 
        System.out.println("fraction: "+fraction); 
    } 
} 

die Ausgänge sind 0 y luego -0.11111111

warum war die erste Ausgabe 0 und nicht -0.11111111111 ?

8voto

Jeff Foster Punkte 41930

Im ersten Beispiel wird eine Ganzzahldivision durchgeführt, da dies der Standardtyp für ein numerisches Literal ist. Versuchen Sie, es zu ändern -1.0/9 (oder 1d/9d - das Suffix d bezeichnet eine double ) und Sie sollten die gleiche Antwort erhalten.

2voto

Gustav Larsson Punkte 7809

1 und 9 sind beide ganzzahlig. Versuchen Sie

1.0/9

Aus diesem Grund funktioniert es für fraction/9 da fraction ist ein Doppelgänger.

1voto

corsiKa Punkte 79125

Wenn Sie -1/9 eingeben, heißt es "-1, das ist ein int. 9, das ist ein int. -1 / 9 in der Ganzzahldivision ist 0. Oh, jetzt muss ich nach double casten."

Eine Änderung auf -1,0 / 9 sollte das Problem lösen.

0voto

Chris Bornhoft Punkte 4001

Versuchen Sie, die "-1/9" in Klammern zu setzen.

0voto

unholysampler Punkte 16647

Die erste ist 0, weil sie eine ganzzahlige Division durchführt. -1 und 9 sind Ganzzahlen und ergeben bei der Division 0. Das Ergebnis wird dann in einen Double umgewandelt, damit es in fraction . Die einfachste Lösung ist diese:

fraction = -1.0/9;

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