AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [Andorra 2D] unbekanntes Problemchen ;)

[Andorra 2D] unbekanntes Problemchen ;)

Ein Thema von incubus_v · begonnen am 25. Mai 2007 · letzter Beitrag vom 28. Mai 2007
Antwort Antwort
Seite 2 von 2     12
incubus_v

Registriert seit: 25. Jan 2007
7 Beiträge
 
#11

Re: [Andorra 2D] unbekanntes Problemchen ;)

  Alt 27. Mai 2007, 13:44
nun id wird aus der sql datenbank ausgelesen und ist ein reiner integerwert. wie ich im ersten post schon geschrieben hab, hat dieser zB den wert 11, wird auch so aus der datenbak ausgelesen und an die an die procedur, aus der der ausschnitt stammt übergeben. id selbst ist auch 11 nur, nachdem floattostr diesen an p übergibt, ist dieser dann plötzlich 11,000000514569... wenn ich an der besagten stelle strtoint verwende, bekomm ich keine fehlermeldung. doch wenn ich so vorgehe, kann ich mir nicht sicher sein, das alles korrekt ist und das ist bei einem strategiespiel extrem wichtig....

so wie es aussieht, muss ich wohl oder übel zwei getrennte programme schreiben oder einfach versuchen alles was ich benötige mit der delphi canvas zu zeichnen...
  Mit Zitat antworten Zitat
Waldteufel
(Gast)

n/a Beiträge
 
#12

Re: [Andorra 2D] unbekanntes Problemchen ;)

  Alt 27. Mai 2007, 17:04
Hallo.

Incubus, diese Ungenauigkeit bekommst du einfach nicht weg. Glaub's uns doch endlich. Das hängt damit zusammen, dass der Computer die Zahlen intern imho als a*2^b speichert.

Vereinfachtes Beispiel

2^(ln(11)/ln(2)) ist 11 (ln = natürlicher Logarithmus)

ln(11)/ln(2) ist etwa 3,459431618 (auf 9 Nachkommastellen gerundet)

Wenn wir jetzt zum Beispiel nur 3,459432 nehmen (also auf 6 Nachkommastellen gerundet) kommt aber (2^3,45) etwa 11,00000290 heraus und das ist nicht 11.

Ähnlich entsteht auch der Fehler bei dir. Aber nur, wenn du nicht mit Ganzzahlen (integer), sondern mit Kommazahlen arbeitest. Daher: Kommazahlen nur verwenden, wenn es unbedingt sein muss.

Also nimm IntToStr, wenn es doch sowieso schon eine Zahl ohne Nachkommastellen ist.
FloatToStr wandelt nämlich erst in eine Kommazahl um und dabei entstehen dann Ungenauigkeiten.

Gruß,
Waldteufel

PS: Im Übrigen wird diese Ungenauigkeit nie dafür sorgen, dass aus 11 mal 10 oder 12 wird. So genau sind Computer dann doch schon...
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: [Andorra 2D] unbekanntes Problemchen ;)

  Alt 27. Mai 2007, 20:47
Zitat:
wenn ich an der besagten stelle strtoint verwende, bekomm ich keine fehlermeldung. doch wenn ich so vorgehe, kann ich mir nicht sicher sein, das alles korrekt ist und das ist bei einem strategiespiel extrem wichtig....
Hä? Ich denke du meinst IntToStr... und wieso kannst du da nicht sicher sein?
FloatToStr ist für Fließkommazahlen da, IntToStr für Integer. Wenn du also einen Integer hast, dann nimm gefälligst auch IntToStr
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
incubus_v

Registriert seit: 25. Jan 2007
7 Beiträge
 
#14

Re: [Andorra 2D] unbekanntes Problemchen ;)

  Alt 28. Mai 2007, 12:59
@Waldteufel

Danke, so versteh ich das wenigstens Hab mir Delphi komplett selbst beigebracht und sowas wie plötliche nachkommastellen soll man dann erst einmal verstehen...

@inherited

Sry, meinte natürlich IntToStr
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz