Double gibt nur 6-Stellige Kommazahlen aus, nicht 15 Stellen
-
Guten Tag,
ich habe ein C++ Programm zur Ermittlung von e^x mit Eingabe von x ( geht nur für positive x ) nach unserem "Programmier-Wissensstandard". Wir haben noch keine Befehle für Exponenten kennengelernt (falls es die gibt).Daher habe ich das manuell per while Schleife gemacht.
Aber worum es in dem Programm geht ist für mein Problem unwichtig, wollte das nur kurz ansprechen.
Nun, ich mache alles mit dem Datentyp double, der nach Vorlesungsinhalt auf 15 Stellen genau rechnet. Allerdings gibt er bei mir immer nur bis zur 6. Stelle aus, was mir ein Rätsel ist.
Wir arbeiten mit Visual Studio 2010.(Falls benötigt hier einmal mein Quellcode )
#include <iostream> using namespace std; int main() { double k, x , Genauigkeit, Summand; cout << "Wert fuer x : "; cin >> x; cout << "Wert fuer die Genauigkeit : "; cin >> Genauigkeit; k=1; // zählt den Index durch ( k = 0 ist für den ersten Summanden ) Summand = 1; // erster Summand immer 1 double z = Summand; // z -> Zwischenspeicher für den Summanden int Zähler = Summand; // Zählt die Anzahl der benötigten Summanden while (Summand >= Genauigkeit) // Test ob der k-Te Summand Größer als die eingegebene Genauigkeit ist { Summand = ((Summand * x) / k); // Exponent von x durch Multiplikation von x um 1 erhöhen & Fibonacci Zahl im Nenner um k erhöhen z = z + Summand; // Summand Zwischenspeichern und den alten dazuaddieren k += 1; // k um 1 erhöhen Zähler += 1; // Zähler um 1 erhöhen } cout << " e^" << x << "=" << z << "\n Anzahl der benoetigten Summanden: " << Zähler; // Ausgabe von z als Ergebnis von e^x cin.get(); getchar(); return 0; }
-
http://www.cplusplus.com/reference/ios/ios_base/precision/
http://www.cplusplus.com/reference/iomanip/setprecision/Die Standardeinstellung ist 6.
-
Wir haben noch keine Befehle für Exponenten kennengelernt (falls es die gibt).
std::expaus<cmath>.