Java: Werte aus einer Arraylist in einem int berechnen?

2 Antworten

Wenn du eine Division mit int Variablen durchführst, kommt auch wieder ein int raus. Das Ergebnis wird dabei abgerundet. 50/3 gibt 16,67, abgerundet = 16. 100/16 = 6,25, abgerundet = 6. Das ist in dem Fall zufällig das korrekte Ergebnis, kann in anderen Fällen aber eine große Abweichung vom richtigen Ergebnis verursachen.

Eine einfache Lösung wäre es, die Reihenfolge zu ändern. Also in dem Fall 100 * Zahlen.get(6) / Zahlen.get(3). Dann wird zuerst 100 mit 3 multipliziert und erst zum Schluss geteilt. Das erhöht die Genauigkeit.

Du kannst aber natürlich statt dessen auch mit double Werten rechnen. z.B. (int)(100.0 * Zahlen.get(6) / Zahlen.get(3)). Oder alternativ (int)(100/(1.0 * Zahlen.get(3)/Zahlen.get(6))). Wenn man einen int Wert mit einem double Wert (1.0 ist ein double wegen des Punktes) multipliziert, wird nicht gerundet, sondern es kommt ein double Ergebnis raus. (int) nennt man einen Cast und wandelt den double Wert zurück in einen int wobei wieder abgerundet wird.

int Berechnen = 100/((int)Zahlen.get(3)/(int)Zahlen.get(6))

Müsste doch so gehen oder nicht? Einfach in int casten

Woher ich das weiß:Studium / Ausbildung – 2 Ausbildungen in Elektrotechnik und ein Studium