string mit Exponentialdarstellung in double umwandeln



  • Hallo,
    ich habe folgendes Problem:
    Ich lese aus einer Textdatei einen String aus. In jeder Zeile steht eine Zahl, Bsp: 5.234722e-001

    Diesen String will ich jetzt in double umwandeln folgendermaßen:

    doublevar[i] = atof(stringvar[i].data());

    Bei Zahlen ohne Exponentialdarstellung funktioniert das sehr gut, mit Exponentialdarstellung kann er es so aber nicht umwandeln.

    Bevorzugt wüsste ich gern, wie man diese Darstellung möglichst elegant umwandelt.

    Sollte das nicht möglich sein, würde ich gerne wissen, wie man verhindert, dass das Programm Zahlen in der Exponentialdarstellung in Dateien schreibt.
    Ist das eine Default-Einstellung?

    mfg

    Nabla

    PS: Tut mir Leid, wenn das Problem trivial erscheint oder bereits gepostet wurde, ich habe wirklich schon nach sinnvollen Ansätzen gesucht.
    Und ja es MUSS in einer Datei zwischengespeichert werden. 🙂



  • Beluga-Snickers schrieb:

    kann er es so aber nicht umwandeln.

    Was heißt das?



  • Da Du ja schon std::string benutzt würde ich auch gleich std::stringstream für die Umwandlung benutzen!



  • Ich bitte meine mangelnde Präzision zu entschuldigen.
    Das Programm wird problemlos kompiliert, wenn man es allerdings laufen lässt, (ich habe eine Ausgabe für die doubles) gibt es nichts aus.



  • Theta, kannst du das bitte etwas genauer ausführen. (Codezeilen wären hilfreich)



  • Beluga-Snickers schrieb:

    Ich bitte meine mangelnde Präzision zu entschuldigen.
    Das Programm wird problemlos kompiliert, wenn man es allerdings laufen lässt, (ich habe eine Ausgabe für die doubles) gibt es nichts aus.

    Warum nimmst du an, dass es am atof liegt? In einem double steht immer etwas, es würde also auch bei einem fehlerhaften atof etwas ausgegeben.



  • Ah ja, hast natürlich recht.
    Irgendwie habe ich mir meine Ausgabezeile rausgelöscht, was die ganze Fragestellung etwas überflüssig macht.
    Es gibt kein Problem, alles funktioniert, wie es soll...

    Danke trotzdem an alle ohne den Hinweis mit dem double,
    hätte ich wohl noch länger dran gesessen.



  • Beluga-Snickers schrieb:

    Theta, kannst du das bitte etwas genauer ausführen. (Codezeilen wären hilfreich)

    In der FAQ gibts dazu einen Eintrag:
    http://www.c-plusplus.net/forum/39488


Anmelden zum Antworten