Java: Werte aus einer Arraylist in einem int berechnen?
Moin!
Ich würde gerne Zahlen aus einer Arraylist benutzen, sie verändern, und diese dann als int weiter benutzen.
Zum beispiel in meiner arraylist sind folgende zahlen
Zahlen.get(3) = 50
Zahlen.get(6) = 3
Nun möchte ich 50 durch 3 teilen, und dieses ergebniss dann durch 100.
Ich würde nun so vorgehen, aber so gehts wohl nicht :)
int Berechnen = 100/(Zahlen.get(3)/Zahlen.get(6))
Ich habe gelesen das wenn man es nur ausgeben will, dann geht das ganze mit (double), das hat auch ganz gut funktioniert, aber ich kann halt nicht damit weiter rechnen.
schönen abend euch! - ich bin noch nicht solange dabei - lerne noch :)
-->vielleicht weiß ich es auch schon und komme nur nicht auf den Lösungsweg, ich hoffe nicht das es an der Uhrzeit liegt !! nen fluffigen Samstag euch!
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