Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » float werte vergleichen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.10.2003, 16:47 Uhr
Andyk



hallo allerseits,

ich habe das problem das ich einen festen (fA)und einen variablen(fB) float wert habe. (klingt ja schonmal sehr kompliziert ). Angenommen fA=5.0000, der Startwert von fB=0.0000 und das Intervall mit dem fB hochgezählt werden soll beträgt 0.2500. So und jetzt das Problem wenn ich abfrage if(fA==fB) und beide haben den wert 5.0000 dann springt er mir einfach nicht in die Schleife.Naja einfach gesagt:

C++:
float fA=5.0000;
float fB=0.0000;
//Diese funktion wird von einer anderen aufgerufen bis fA=fB ist.
void erhöhefB()
{
   fB += 0.2500;
   if(fA==fB)
   {
      MachWas();//Hier springt er nicht rein, auch wenn fA und fB gleich sind
   }
}


Vielen Dank.
--
CU,
ANDYK

Dieser Post wurde am 17.10.2003 um 16:49 Uhr von Andyk editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.10.2003, 17:02 Uhr
virtual
Sexiest Bit alive
(Operator)


Bei Floats ist immer bzgl Gleichheit Vorsicht angebracht. Man sollte eigentlich niemals direkt auf Gleichheit prüfen, sondern immer nur prüfen, ob sich die Floats hinsichtlich eines vorgegebenen Epsilons unterscheiden. (Der Grund ist die naturgemäße Ungenauigkeit von floats). zB:

C++:
[b]#define EPSILON 0.00001[/b]

float fA=5.0000;
float fB=0.0000;
//Diese funktion wird von einer anderen aufgerufen bis fA=fB ist.
void erhöhefB()
{
   fB += 0.2500;
[b]   if(fabs(fA-fB)<=EPSILON)[/b]
   {
      MachWas();//Hier springt er nicht rein, auch wenn fA und fB gleich sind
   }
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 17.10.2003 um 17:02 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.10.2003, 17:09 Uhr
(un)wissender
Niveauwart


Wow, das ist mal was neues, danke, virtual!
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.10.2003, 17:19 Uhr
Andyk



Danke für die Interessante Info
--
CU,
ANDYK
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.10.2003, 17:58 Uhr
Pablo
Supertux
(Operator)



Zitat:
(un)wissender postete
Wow, das ist mal was neues, danke, virtual!


tja, das hab ich auch vor kurzem auch erfahren, sagen wir mal vor 2 Wochen oder so, ich hatte nämlich dieses Problem und hab zufällig ein Online Buch auf der Suche eines PP OnlineBuches das gefunden.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 17.10.2003 um 17:59 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: