Ja das Problem ist nicht das Floor ansich, das liefert mir 808.f zurück, erst nachdem es wieder / 10.f genommen wird, ist es das 80.800003f.
Hm um auf int zu wechseln müsste ich ziemlich viel Umbauen. Schon das ganze Grundgerüst, wo ich die Daten überhaupt Lade läuft über float, damit ich das einfach ändern kann. Ich hab da einen Grundwert und einen Faktor mit dem der Grundwert multipliziert wird und daraus ergeben sich dann die Werte beim laden. So kann ich den Grundwert einfach ändern und das Spiel passt alle Werte an, wenn ich kleinere Zahlen will.
z.B.
100 * 0.05 = 5
10 * 0.05 = 0.5
Für höhere Level dann noch:
lvl 1 -> 5
lvl 2 -> 5 * 1.2 = 6
lvl 3 -> 6 * 1.2 = 7.2
lvl 4 -> 7.2 * 1.2 = 8.64
usw.
Ich dachte jetzt halt ich kann das mit Floor einfach begrenzen und dann im Spiel so anzeigen. Also hab ich dann zwei Möglichkeiten, entweder ich erhöhe meinen Grundwert um das 10 fache und caste dann nach int für die Darstellung oder ich benütze das std::setprecision von Checkmateing.
Warum ich die Nachkomma stelle eigentlich wollte liegt daran, das ich "1000.0" besser finde als "10000" für die Lebenspunkte der Einheiten. Das erste sieht da finde ich übersichtlicher aus. Vorallem wenn man dann im Kopf etwas überschlagen soll ob man die Einheit jetzt schon heilt oder noch eine Runde wartet um dann einen größeren Heilzauber anwenden zu können. Ich finde dabei ja schon die 1000.0 für Level 1 eigentlich zu hoch. Benütze ich keinen kleineren Wert als 5 kann ich es auf 100.0 oder 1000 reduzieren. Aber soweit bin ich noch nicht um das sagen zu können.
So stört mich der Fehler eigentlich auch garnicht, er stört halt nur wenn er dann auf den Bildschirm erscheint.
Oh zu lange zum schreiben gebraucht.
@BlueCobold
Hab bis jetzt kaum floats benützt und wusste deswegen jetzt garnicht das die Berechnungsfehler haben können. Was zu dem Irrglauben führte, es geht auch anders und weswegen mich der Fehler auch so überrascht hat.