Problem mit double

Alles zur Sprache Delphi

Problem mit double

Beitragvon XDClaner » Montag, 26. Dezember 2011, 00:10:54

Ich habe in meinem Spiel ( Klick mich! ) eine Funktion die nach einer Sekunde eine Variable um 1 hoch zählt, um die gespielte Zeit anzuzeigen.
Ursprünglich wollte ich mit hundertstel Sekunden Arbeiten. ca. so:

Code: Alles auswählen
var i:double = 0;

procedure x
begin
   i:=i+0.1;
end,


dabei wurde die funktion x jede hundertstel Sekunde über einen Timer abgerufen.
allerdings bekam ich dann irgendwann zahlen die so aussahen : 6.29999999999999

Ich habe keine Ahnung woher das kommt, könnt ihr mir vllt helfen?


mfg
XDClaner
Zuletzt geändert von Zweistein2 am Montag, 26. Dezember 2011, 00:25:16, insgesamt 1-mal geändert.
Grund: Link verpackt ;)
Benutzeravatar
XDClaner
Moderator
Moderator
 
Beiträge: 232
Registriert: Donnerstag, 22. Dezember 2011, 15:46:20
Hat sich bedankt: 2 mal
Danksagungen: 5 mal


Re: Problem mit double

Beitragvon Nakroma » Montag, 26. Dezember 2011, 20:38:09

Gibts vlt. so ne Art rundungsbefehl?
Bzw. dürfte es hiermit nicht gehen?
Code: Alles auswählen
var gerundet: integer;
  zahl: double;
begin
  zahl:=123.4;

  gerundet := Ceil(zahl); //Aufrunden

  gerundet := Floor(zahl); //Abrunden
Bild
Benutzeravatar
Nakroma
Array-User
Array-User
 
Beiträge: 114
Registriert: Donnerstag, 15. Dezember 2011, 19:53:35
Wohnort: #include <100qmWohnung.au3>
Hat sich bedankt: 3 mal
Danksagungen: 3 mal

Re: Problem mit double

Beitragvon XDClaner » Montag, 26. Dezember 2011, 22:58:16

Ich will eine Stelle nach dem Komma ja behalten, der Rundungsbefehl in Delphi(bzw. Object Pascal) heißt Round(x); wobei x für eine Zahl steht
Benutzeravatar
XDClaner
Moderator
Moderator
 
Beiträge: 232
Registriert: Donnerstag, 22. Dezember 2011, 15:46:20
Hat sich bedankt: 2 mal
Danksagungen: 5 mal

Re: Problem mit double

Beitragvon Nakroma » Dienstag, 27. Dezember 2011, 00:37:23

Das vlt?:
Code: Alles auswählen

uses Math;

function RundeAufStelle(zahl: double; stellen: integer): double;
var multi: double;
begin
  multi:=IntPower(10, stellen);
  zahl:=round(zahl*multi);
  result:=zahl/multi;
end;
Bild
Benutzeravatar
Nakroma
Array-User
Array-User
 
Beiträge: 114
Registriert: Donnerstag, 15. Dezember 2011, 19:53:35
Wohnort: #include <100qmWohnung.au3>
Hat sich bedankt: 3 mal
Danksagungen: 3 mal

Re: Problem mit double

Beitragvon XDClaner » Dienstag, 27. Dezember 2011, 00:52:47

Muss ich mal ausprobieren, melde mich wenns geht!
Benutzeravatar
XDClaner
Moderator
Moderator
 
Beiträge: 232
Registriert: Donnerstag, 22. Dezember 2011, 15:46:20
Hat sich bedankt: 2 mal
Danksagungen: 5 mal


Zurück zu Delphi

cron

x