Hallöchen Leute...
Bin gerade an der Anpassung meines Spieles auf andere Geräte/Auflösungen. Bisher war ein Objekt bei meinem SGS2 50 Pixel breit und möchte es nun prozentuell auf andere anpassen. Daher die Rechnung:
100/480*50 = 10,42 (%).
daher muss ich jetzt bei der breite folgendes schreiben: width/100*10.42F;
width wird vorher ermittelt und gibt bei jeden Gerät die passende breite an, hab das auch schon getestet, dort kann also kein Fehler passiert sein.
Da das Ergebnis im Spiel jedoch auf 41,68 bei meinem SGS2 ausfällt, kann hier etwas nicht stimmen. Die Nachrechnung mit einem normalen Taschenrechner ergibt: (480/100*10,42 =) 50,016
Jetzt habe ich gelesen, dass es ein Floating point problem gibt, sodass kleine Abweichungen passieren können. Daraufhin habe ich mir gedacht, ich lass mal die Kommazahlen zum testen weg. Demnach müsste b_width (auf diese Variable werden diese Rechnungen geschrieben) ausspucken: (480/100*10 =) 48. Ausgespuckt wird im Spiel jedoch 40.
Daher meine Frage, wie kann so etwas passieren und wie löst man dieses Problem am Besten?
Was mich auch verwundert ist, dass ich die höhe ebenfalls mit dieser Formel berechnen lasse, diese jedoch korrekt ist.
Hier der Code zur Veranschaulichung:
private float b_width, b_height;
private int height, width;
// ...
DisplayMetrics
deviceDisplayMetrics = new DisplayMetrics();
((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(deviceDisplayMetrics);
width = deviceDisplayMetrics.widthPixels;
height = deviceDisplayMetrics.heightPixels;
b_width = width/100*10; //.42F;
b_height = height/100*6.25F; // Ergibt im Spiel genau 50
Alles anzeigen
Würde mich über Antworten freuen:D
MFG