Überlauf eines long double?



  • Dann solltest du den Wert vorher testen, bevor du die Wurzel ziehst, denn die Wurzel einer negativen Zahl ist nun mal nicht definiert und erzeugt bei Aufruf von sqrt() eine std::domain_error Ausnahme.



  • @oelsni
    Nun verrat mir bitte mal wie bei einen Dreieck eine Seite sehr groß und die beiden anderen sehr klein sein sollen?



  • Ich habe das Beispielprogramm (siehe vorletzter post von mir) mit dem Debugger getestet. Der Debugger zeigt die long double Variable richtig an, sobald ich sie aber in die Datei schreibe, steht ein ganz anderer Wert in der Datei. 😞 Weiß einer, wie ich das verhindern kann?



  • Wie schreibst du denn jetzt den Wert in die Datei (mittels fstream)?
    Evtl. mußt du noch einige Formatierungsflags (fixed oder scientific) angeben?



  • Mein Programm sieht so aus:

    long double i = 9.21369875421325665478;
    ofstream f1("Flächeninhalte.txt"); 
    f1<<i<<endl;
    


  • Braunstein schrieb:

    @oelsni
    Nun verrat mir bitte mal wie bei einen Dreieck eine Seite sehr groß und die beiden anderen sehr klein sein sollen?

    krümmung des raums aufgrund von masse-singularitäten

    vielleicht sind die berechnungen ja allesamt richtig. nur unser verstand ist zu klein, um dies zu begreifen 😉



  • kann mir jemand erklären, wie man einen long double in einen string umwandelt? Oder gibt es einen anderen Weg, um einen double korrekt(!) in eine Datei zu schreiben? Ich komm mit meinem Programm and der Stelle echt nicht weiter.



  • Hast du auch in der richtigen datei nachgeschaut? Dein Code funktioniert bei mir ohne Probleme.

    #include <iostream>
    #include <sstream>
    #include <iomanip>
    using namespace std;
    
    int main()
    {
        long double i = 9.21369875421325665478;
        stringstream f1;
        f1 << std::setprecision(15) << i << endl; //mehr als 15 Stellen sind auch bei long double nicht drin
        cout << f1.str() << endl;;
        return 0;
    }
    


  • Ich habe den Code ausprobiert, bei mir zeigt er eine ganz falsche Zahl am Bildschirm an (dasselbe Problem, wie vorher in der Datei). Woran kann das liegen (ich nutz Dev-C++)? Muss ich vielleict die IDE wechseln? Wenn ja, welche kostenlosen IDEs würdet ihr mir empfehlen?



  • An der IDE kann das eigentlich nicht liegen, höchstens an der verwendeten Stream-Bibliothek.
    Dev-C++ ist allerdings sowieso veraltet und wird nicht mehr weiterentwickelt. Ich empfehle hier CodeBlocks (www.codeblocks.org). Am besten gleich das Paket mit dem MinGW. Dann noch nach der Installation einen aktuellen NightlyBuild drauf und schon sieht es gut aus. 🙂



  • vielen dank, werde es mal mit CodeBlocks versuchen.


Anmelden zum Antworten