wie kann ich -0 umgehen?
-
Hallo!
Bei meinem Programm wird nur weitergerechnet wenn das Ergebnis der vorigen Rechnung >= 0 ist. Bei einer meiner Beispiele kommt aber komischerweiße
-0.0000 heraus. Die Folge ist, dass er einen Fehler ausgibt. Wie kann ich das umgehen?Danke
-
indem du den quellcode postest? *kristallkugel wieder einpack und wart*
-
ok, das hat sich erledigt, aber jetzt hab ich ein anderes Problem: Wie kann ich Zahlen nur bis zu einer bestimmten Kommastelle vergleichen?
Bsp.
double a = 2,537294; double b = 2,537250; if (a == b) { ... }das sollte dann also "true" ergeben.
Danke
-
Hallo
Subtrahiere die beiden Zahlen und vergleich das Ergebnis mit der kleinst möglichen Differens, die du unterscheiden willst.
double a = 2.537294; double b = 2.537250; if (abs(a - b) < 0.001) { ... }bis bald
akari
-
shark95 schrieb:
ok, das hat sich erledigt, aber jetzt hab ich ein anderes Problem: Wie kann ich Zahlen nur bis zu einer bestimmten Kommastelle vergleichen?
Streng genommen müßtest Du sie jeweils in einen String - mit der gewünschten Nachkommazahl formatiert - ausgeben und dann die Strings vergleichen.
Überlich ist es aber, eine Toleranz auzugeben.#include <cmath> // std::abs( double ) int main() { const double EPS = 1.E-4; double a = 2.537294; double b = 2.537250; if( std::abs( a - b ) < EPS ) ; // "Zahlen sind fast gleich " return 0; }.. aber aufpassen, dass Du nicht aus Versehen abs( int ) erwischt. Das kann zur Fehlfunktion Deines Programms führen.
Gruß
Werner