2016-07-02 8 views
0

Ich entschuldige mich, wenn der Titel ein wenig verwirrend ist, hatte ich einige Schwierigkeiten, zu versuchen, zu sagen, was ich sagen wollte.Warum gibt mein Code mir die falsche Antwort auf diese mathematische Frage?

Hier ist mein Code:

public class Assignment3 { 

    public static void main(String[] args) { 
     int A = 100; 
     int B = 20; 
     int C = 30; 
     int X = 4 * A; 
     int Y = 3 * (B + C); 
     int Z = X/Y; 

     System.out.println("The value of A is " + A + "."); 
     System.out.println("The value of B is " + B + "."); 
     System.out.println("The value of C is " + C + "."); 
     System.out.println("The answer is " + Z + "."); 

    } 

} 

Es hält mir 2 als Antwort zu geben, wenn ich die Antwort weiß 2.6 wiederholende ist. Irgendwelche Ideen warum und wie kann ich es beheben? Danke im Voraus.

+2

Weil Sie ganze Zahlen sind geteilt wird. –

+0

Jetzt wissen Sie, dass Sie 'float' oder' double' für Bruchzahlen verwenden können. Aber diese können ungenau sein. Wenn Sie Genauigkeit benötigen, z. B. für Geld, verwenden Sie 'BigDecimal'. –

Antwort

3

Sowohl X als auch Y sind Ganzzahlen (nicht dezimale Werte). Wenn Sie eine Integer-Division durchführen, wird die Dezimalzahl abgeschnitten, was zu einer unerwarteten Antwort führt.

+0

also, was sollte ich sie ändern? – cpitt6477

+0

Nevermind Ich habe die letzten 3 in Floats geändert und jetzt funktioniert es. Vielen Dank! – cpitt6477

1

Zwei Dinge, die Sie tun müssen. - Ändern Sie den Typ von Z in float. - Werfen Sie entweder A oder B, um in der Division zu floaten, da beide Ganzzahlen sind.

die Sie interessieren, und Sie werden das richtige Ergebnis erhalten:

float Z = (float) X/Y; 
+0

Danke für die Hilfe! – cpitt6477

+0

Kein Problem. Froh, dass es geholfen hat. –