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


Anmelden zum Antworten