Raving Alien Geschrieben 22. März 2001 Teilen Geschrieben 22. März 2001 hi, ich möchte zwei float Zahlen mit einander vergleichen, dies gelingt auch sehr einfach mit if. Mein Problem ist nun, dass er bis auf die letzte Stelle nach dem Komma vergleicht. Ist es Möglich, dass er nur bist zur 2. Stelle nach dem Komma vergleicht(also bis auf ein hunderstel genau) ? Danke schon mal. ------------------ : .. ··> { aLeXaNdEr GrAmAnN } : .. ··> { Techno Party Days } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
developer Geschrieben 22. März 2001 Teilen Geschrieben 22. März 2001 Versuche mal #include <iomanip.h> setpressision(int n) oder stetze eine kleinen Toleranzbereich fest... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Raving Alien Geschrieben 22. März 2001 Autor Teilen Geschrieben 22. März 2001 Wie genau kann ich denn einen Toleranzbereich festsetzen ? ------------------ : .. ··> { aLeXaNdEr GrAmAnN } : .. ··> { Techno Party Days } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
developer Geschrieben 22. März 2001 Teilen Geschrieben 22. März 2001 Einfacher ist es, wenn du setpresision nimmst, wobei n die Anzahl der NAchkommastellen ist. Kannst Bei Progistart die ANzahl als Variable einlesen lassen.... TOlereanz: Z.B. <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">Zitat:</font><HR>Original erstellt von aLeXg: Wie genau kann ich denn einen Toleranzbereich festsetzen ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maddin Geschrieben 22. März 2001 Teilen Geschrieben 22. März 2001 das problem an der iomanip ist, das sie wie der name auch schon vermuten lässt. ( Input/ Output Manipulatoren) meines wissen nach nur was mir der ausgabe zu tun hat. zum beispiel: float x=2.345; cout<<setprecision(1)<<x; // liefert 2.3 also nicht zum vergleichen geeignet. mir würde jetz so etwas einfallen, wie mal 100, casten in int, casten in float, geteilt durch 100. beispiel: float x=2.345; x*=100; // komma um zwei stellen verschieben 234.5 int tmp = (int) x // überflüssige kommastellen abhacken x=(float) x/100 // komma um zwei stellen verschieben 2.34 ich hoffe es läuft damit. ------------------ mfg maddin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Raving Alien Geschrieben 22. März 2001 Autor Teilen Geschrieben 22. März 2001 Erkläre mir das mit dem setpressision bitte mal es genauer, bin so ne ziemliche Niete in C. Danke ------------------ : .. ··> { aLeXaNdEr GrAmAnN } : .. ··> { Techno Party Days } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ingh Geschrieben 22. März 2001 Teilen Geschrieben 22. März 2001 Ich würde vorschlagen, die float-Zahlen in geeigneter Weise in int-Zahlen umzuwandeln und diese dann zu vergleichen. (Ähnlich dem Vorschlag von maddin; hier bleiben jedoch die Werte erhalten) Beispiel: Die Floatzahlen f1 und f2 sollen mit zwei Nachkommastellen verglichen werden: int i1 = 100 * f1; int i2 = 100 * f2; if (i1 > i2) ...undsoweiter... es geht auch kürzer (aber nicht unbedingt übersichtlicher): if ((int)(100 * f1) > (int)(100 * f2)) ... Und je nach notwendiger Genauigkeit, Größe der Zahl und Einstellung des Compilers (int standardmäßig mit 8 oder 16 bit) empfiehlt es sich, long statt int als Datentyp zu verwenden, aber das Prinzip bleibt dasselbe. [Dieser Beitrag wurde von IngH am 22. März 2001 einige Male editiert.] [Dieser Beitrag wurde von IngH am 22. März 2001 editiert.] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Raving Alien Geschrieben 22. März 2001 Autor Teilen Geschrieben 22. März 2001 Cool, ich glaube damit sollte es klappen. Schönen dank. ------------------ : .. ··> { aLeXaNdEr GrAmAnN } : .. ··> { Techno Party Days } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maddin Geschrieben 22. März 2001 Teilen Geschrieben 22. März 2001 @IngH versuch mir bloß nicht zu erzählen, wie man ein ganzes programm in eine zeile schreib. das kann ich selber gut genug. *wolltelehrerschonimmermalmiteinerdeklarationdesfünftengrsadesschocken* zu dem steprecision() man kann in c++ die ausgabe formatieren. eine möglichkeit ist es sogenannte manipulatoren zu verwenden. das sind spezielle funktionen die man gleich bei der ausgabe mit verwenden kann. in etwa so: cout<<endl; im beispiel ist ein manipulator der bekannterren art zu sehen, den man glaube ich kennt. diese manipulatoren machen nichts anderes als die ausgabe zu verändern. so zum beipiel fügt "endl" einen zeilenvorschub ein und lehrt den puffer. ein andere manipulator ist zum beispiel: setprecesion(int); mit ihm kann man die genauigkeit der ausgegebenen zahl bestimmen. beispiel:´ #include <iomanip> using namespace std; cout<<setprecision(3)<<1.2<<endl; würde so geschrieben "1.200" ausgeben, weil durch den manipulator gesagt wurde, das die genauigkeit 3 stellen betragen soll. wenn du noch wissen willst, welche manipulatoren es gibt, dann sollte dir die msdn weiter helfen. mehr fallen mir im momment auch nicht ein. als suchbegriff sollte entweder "manipulator" herhalten dürfen oder auch "iomanip.h". das ist die headerdatei, in der die etwas komplexeren manipulatoren deklariert wurden. so zum beispiel auch setprecision(); ich hoffe das hat ein wenig geholfen und das ich mich verständlich ausgedrückt haben ------------------ mfg maddin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.