Einzelnen Beitrag anzeigen

2kstealth
(Gast)

n/a Beiträge
 
#1

0 + 0.1 = ? Probleme mit dem Datentyp Single?

  Alt 11. Okt 2004, 23:34
Also ich habe ein kleines Proggy, und es tut nicht was ich will!

Das Problem ist folgendes:

Ich will eine Parabel errechnen lassen und da auf dieser Erde Schwerkraft herrscht,
muss ich diese mit einbeziehen.
Die Formel ist Wunderbar, einfach zu verstehen und überhauptnicht kompliziert!


Jetzt aber zum wirklichen Problem:

Ich habe eine Variable als single deklariert und werde diese nun Versuchen immer
um 0.1 zu erhöhen.
Die Parabel die ich einzeichnen will soll nun genau 8 Sekunden der Fluglaufbahn beschreiben.
Die Variable hat den Wert 0 zugewiesen bekommen.
Das Programm geht in eine Schleife die 80 mal durchlaufen wird, und bei jedem Durchlauf
soll die Variable nun um 0.1 erhöht werden.

Das ganze sieht nun SO aus:
------------------------------------
time := 0;
for i <= 80 do
begin
time := time + 0.1;
end;
------------------------------------
Hier sieht die Ausgabe von time nach dem ersten mal der Schleife schon so aus:

0,099999914546


Ich dachte mir, jeder macht mal Fehler, und habe es hiermit Probiert:
------------------------------------
time := 0;
for i <= 80 do
begin
time := StrToFloat(FloatToStrF((time + 0.1),ffGeneral,10,1);
end;
------------------------------------
Aber wie zu erwarten, kommt hierbei zwar alle fünf Durchläufe eine x,5 oder x,0 heraus, aber nie wirklich etwas
wie dieses gebilde hier:

0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
1.1

Kann mir BITTE einer sagen was ich hier falsch mache???

Ich danke euch im Vorraus und wünsche noch einen schönen Abend

Mit freundlichen Grüßen

StEaLtH
  Mit Zitat antworten Zitat