Ergebniss auf Komma Zahl prüfen



  • Hallo wie kann ich überprüfen ob das Ergebniss eine Komma Zahl ist oder nicht?

    #include <windows>
    #include <iostream>
    #include <sstream>
    using namespace std;
    
    int main()
    {
    
    double z1 = 17;
    double erg;
    
    erg = z1 / 8;
    
    cout << erg;
    
            if ( erg == ... )
            {
              cout << "das ergebniss ist eine komma zahl ";
            }
    
            system("PAUSE");
            return 0;
    }
    


  • if (floor(erg) == erg)
       cout << "das Ergebniss ist eine ganze Zahl" << endl;
    


  • Da würde ich mich nicht drauf verlassen, da es dank der Ungenauigkeit auch mal sein kann daß sowas wie 16,9999999999997 rauskommt aber eigentlich 17 rauskommen müsste.


  • Mod

    Wie Fellhuhn schon erwähnt hat, ist das praktisch unmöglich bei Fließkommazahlen. Ein paar Alternativen, sortiert von einfach umsetzbar bis extrem kompliziert:

    - Du gibst dich mit einer gewissen Abweichung zufrieden und prüfst nur, ob das Ergebnis in einem gewissen Bereich um eine Ganzzahl liegt.
    - Du verwendest statt Fließkommazahlen einen Datentypen der exakt rechnet, beispielsweise eine Klasse für Brüche
    - Du machst symbolische Mathematik


Anmelden zum Antworten