Hallo zusammen, habe folgendes Problem: ich möchte von einer double-Zahl die Anzahl der Nachkommastellen ermitteln. Gibt der Benutzer beispielsweise 2.45 ein, möchte ich 2 erkennen. Habe mir das mal folgendermaßen vorgestellt (wobei k die double-Zahl ist): while (k>0) { if (k<1) { k = k * 10; zaehler = zaehler + 1; } else { k = k - 1; } } Das ganze funktioniert allerdings nicht richtg. denke es liegt, daran, dass z.b. eine double-1 nicht 1 sondern nur ungefähr eins ist... Hat jemand von euche ne Idee? PS: geschrieben als Consolen-Anwendung in cpp!
"Gibt der Benutzer beispielsweise 2.45" Also gibt der Benutzer einen String ein, in dem parst du auf Punkt oder Komma und bestimmst die Anzahl der Zeichen bis zum Ende des String - das wars.
ja, mein Problem war, dass ein double-wert übergeben werden soll und ich keine funktion gefunden hatte um diesen wert in string zu konvertieren. man finden nur haufenweise funktionen von string to int/double/... hab jetzt doch etwas gefunden: gcvt(,,) mit dem string geh ich dann natürlich genauso um wie du's gesagt hast... trotzdem thanks... läuft bereits wie's soll...
Der Ansatz ist ... reichlich ungünstig. Rundungsungenauigkeiten können dazu führen, da0 2.5 als 2.4999999999999999 ausgedrückt wird, was dann natürlich irrsinnig viele Nachkommastellen hat. Auch kann so nicht erkannt werden, wenn der Benutzer "2.00" eingibt. Das sind nämlich auch zwei Nachkommastellen. Bestimme die Anzahl anhand des vom Benutzer eingegebenen Strings, alles andere ist Quark.
es wurde mir eben hier von einem anderen programmteil explizit ein double-wert übergeben. mein erster gedanke war auche eine lösung über die string-länge und die position des pkts. allerdings hatte ich nach reichlich googlen keine passende fkt gefunden, den double-wert in einen string zu konvertieren. hab ja in meinem 2. post geschrieben, dass ich nun doch was gefunden habe: gcvt(;;). Damit habe ich meien string und kann den anderen ansatz verwerfen.
Auch wenn "gcvt" einen double in einen string umwandelt, ist damit trotzdem nicht die Anzahl der von einem Benutzer eingegebenen Nachkommastellen ermittelbar - das von mir bereits gesagte behält Gültigkeit. Vor allem belügst Du Dich beim Einsatz von gcvt selbst - die Anzahl der gewünschten Nachkommastellen musst Du beim Aufruf angeben. Damit kann gcvt nicht verwendet werden, um herauszufinden, wieviele Nachkommastellen eine floating-Point-Zahl hat. Der Ansatz bleibt Quark.
Mal abgesehen davon, dass das mit den Nachkommastellen so nie richtig funktionieren wird - wurde ja schon mehrfach erwähnt - verwendet man in c++ zur Konvertierung stringstreams. Gehört zur STL.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.