Probleme mit Float/Integer Variablen
Übersicht

LorionBetreff: Probleme mit Float/Integer Variablen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
ich schreibe grade ein rundenbasierendes Strategiespiel. Dazu hat jede Einheit einen B(ewegungs)W(ert), der so zwischen 6 und 22 liegt. Im Type ist es also eine Integer Variable. In der FigurenBewegen Funktion gibt es allerdings auch Teilschritte, so das ich die LOCAL restBW# erstelle die bei jeder Bewegung um einen Pixel durch restBW=restBW-0.1 verringert wird. Das ganze ist in einer Schleife eingebunden die bis "restBW=0 or KeyDown(1)" läuft. Das hat aber nicht funktioniert, und als ich dann zwecks Fehlerbestimmung mir restBW hab anzeigen lassen stellte sich heraus das sie nie glatt um 0.1 verringert wird sondern Werte wie "8,899999", etc. speichert, was dazu führt das nie genau 0 erreicht wird! Man kann das ganze natürlich umgehen indem man =0 durch <=0 ersetzt oder für restBW eine Integer setzt, deren wert man zuvor verzehnfacht, aber es kann ja nicht sein das B3d nicht in der Lage ist nen genauen Wert zu speichern. Also, was mach ich falsch? MfG, Lorion |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Garnichts, das ist der genaue Wert.
0.1000000 kann in Float nicht dargestellt werden. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Lorion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn 1-0.1 rechne ist bei mir der genaue Wert 0.9, nicht 0.899999. | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja aber wenn du es in eine variable speicherst wird sie nimmer in ihrer ganzen genauigkeit da sein.
das hat meist bei 1-2 schritten keinen einfluss, aber kann bei mehreren schritten dann doch irgendwann zum tragen kommen und nachkommastellenungenauigkeiten erzeugen. wenn du das umgehen willst: alles mal 100 zb und mit int rechnen und am schluss wieder /100.0 (-> fixed point arithmetik) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Lorion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Alles klar, muss also umgangen werden.
Danke! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group