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.
-
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