Von Double nach String: Nullen weg



  • Hallo,
    ich habe ein Programm geschrieben, was eine Gleichung nach x auflöst. Während die einzelnen Terme der in einem String gegebenen Gleichung erfasst werden, werden die erfassten Terme zur Berechnung in einen Double umgewandelt. Wandelt man den berechneten Wert dann mit "to_string(...)" wieder in einen String zurück, so bleiben einige Nullen an der Zahl hängen, die eigentlich völlig unnötig sind. Kann man diese Nullen irgendwie abschneiden? Oder ist Double hierfür der völlig falsche Datentyp?



  • Wenn du kontrollieren willst, wie genau die Zahl zu einem String umgewandelt wirst, braucht du einen std::ostringstream.



  • Navy schrieb:

    Wandelt man den berechneten Wert dann mit "to_string(...)" wieder in einen String zurück,

    Wozu? Das Problem tritt doch erst ganz am Schluss bei der Ausgabe auf und da braucht es kein to_string.

    so bleiben einige Nullen an der Zahl hängen, die eigentlich völlig unnötig sind.

    Diese Nullen sind nicht unnötig, denn sie zeigen an, dass da gerundet wurde.

    Kann man diese Nullen irgendwie abschneiden? Oder ist Double hierfür der völlig falsche Datentyp?

    to_string ist die falsche Methode. sprintf (oder für Masochismus auch std::ostringstream oder std::cout) sind bessere Methoden um menschenlesbare Darstellungen zu erzeugen.



  • Ich will nur mal anmerken, dass 2 etwas anderes ist als 2.00

    Der Unterschied ist die Genauigkeit. Wenn man so will:
    2 bedeutet 2 +- 0.5
    2.00 bedeutet 2 +- 0.005

    Übrigens, wieso ließt du die Zahlen nicht gleich als double aus dem "Gleichungsstring"?

    Wenn du die Anzahl der Nachkommastellen bestimmen möchtest, die ausgegeben werden, schau dir mal setprecision() an im header <iomanip>


Log in to reply