Genauigkeit von Double - e auf x Stellen genau
-
Hallo zusammen
Wir haben in Mathe die Aufgabe bekommen, die Eulersche Zahl zu berechnen mit Excel auf mindestens 3 Stellen, und schauen wie gross n ist.
Da mir das zu leicht und zu blöd war hab ich nun ein C++ Progrämmchen geschrieben um mehr Stellen zu bekommen, aber irgendwie ist bei 15 Nachkommastellen schluss. Ist das so? Was gibt es für Datentypen, die genauer sind?Hier mal mein Code:
#include <iostream> #include <sstream> #include <iomanip> #include <string> #include <cmath> using namespace std; //Gefunden im C++ Forum :) int read_int_from_cin( std::string const &prompt ) { string entered; stringstream sstr; int ret; do { sstr.clear(); cout << prompt << flush; getline( cin, entered ); sstr.str( entered ); sstr >> ret; } while( !sstr ); return ret; } int main(int argc, char *argv[]) { int n = read_int_from_cin( "Enter n: " ); cout.precision(20); cout.setf( ios::fixed, ios::floatfield ); double e = 0; for( int i = 1; ( e < 2.718281828459045235360 || e >= 2.718281828459045235361 ) // Stoppe, wenn Ergebniss genau genug /*i <= n*/; // War: Stoppe, wenn n mal gerechnet ++i ) { e = pow( ( 1.0 + pow( i, -1.0 ) ), i ); // Die Formel n = i; } cout << "n=" << setw(6) << n << " e=" << e << endl; return 0; }
Und zweitens wollt ich gern prüfen, bei welchem n jede Nachkomma-Stelle richtig ist. Hab aber keine Idee das zu tun, ausser mit x-mal if Abfragen ala
if( e >= 2.71 && e < 2.72 ) gebe aus: 2te Stelle erreicht in n Zyklen if( e >= 2.718 && e < 2.719 ) gebe aus: 3te Stelle erreicht in n Zyklen
Vielen Dank schonmal im voraus.
-
Simon&Simon schrieb:
Da mir das zu leicht und zu blöd war hab ich nun ein C++ Progrämmchen geschrieben um mehr Stellen zu bekommen, aber irgendwie ist bei 15 Nachkommastellen schluss. Ist das so?
Ja, afaik hat double (in etwa?) 15 signifikante Nachkommastellen.
Simon&Simon schrieb:
Was gibt es für Datentypen, die genauer sind?
Im C++-Standard keine, aber es gibt verschiedene Mathe-Bibliotheken, die sicher auch genauere Fließkommazahlen haben. Ein Beispiel für eine solche Bibliothek kann ich dir jetzt allerdings nicht nennen.