Probleme mit Float/Integer Variablen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Lorion

Betreff: Probleme mit Float/Integer Variablen

BeitragFr, Jun 29, 2007 13:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Jun 29, 2007 13:12
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Jun 29, 2007 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn 1-0.1 rechne ist bei mir der genaue Wert 0.9, nicht 0.899999.
 

Dreamora

BeitragFr, Jun 29, 2007 13:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Jun 29, 2007 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Alles klar, muss also umgangen werden.

Danke!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group