PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Anfängerfrage: Mehr Stellen nach dem Komma?


mYthro
2007-09-08, 19:35:44
Ich hab gerade ein c++ Tutorial angefangen und bin jetzt bei den Schleifen angekommen. Um das Gelernte mal zu testen, habe ich ein Programm zur Annäherung an Pi geschrieben:

#include <iostream>
#include <math.h>

using namespace std;

int main()
{

for (double x=0,a=1,b,c,d; x < 100000; a++,x++,d=b+d ){
b = 1/(a*a);
c = sqrt((b + d)*6);
cout<< c << "\n";

}
cin.get();
}


Das Problem ist nur, dass das Ausgabefenster die Zahlen immer nur bis zur fünften Stelle nach dem Komma anzeigt, und das ist bei Pi relativ witzlos.
Wie kann ich mehr Stellen anzeigen lassen?

Gast
2007-09-08, 19:39:59
http://www.cplusplus.com/reference/iostream/ios_base/precision.html

mYthro
2007-09-08, 19:46:02
funktioniert. Danke!

rotalever
2007-09-09, 12:01:49
Funktioniert das Programm denn? Wenn ich es anschaue, sieht es für mich so aus, dass beim ersten Mal, wenn auf "d" zugegriffen wird, es noch nicht initialisiert ist.

mYthro
2007-09-09, 12:50:05
Es hat funktioniert, allerdings mit einer Warnung des compilers. Ich habs verbessert und jetzt kommt auch keine Warnung mehr. Danke für den Hinweis.

TheGamer
2007-09-09, 12:50:54
Funktioniert das Programm denn? Wenn ich es anschaue, sieht es für mich so aus, dass beim ersten Mal, wenn auf "d" zugegriffen wird, es noch nicht initialisiert ist.

Nein es wird so nicht funktionieren wenn du mit 0 initialisiert erhaelst du (von der precision mal abgesehen)

3.141592558095902543158217667951248586177825927734375

rotalever
2007-09-09, 13:23:47
Nein es wird so nicht funktionieren wenn du mit 0 initialisiert erhaelst du (von der precision mal abgesehen)

3.141592558095902543158217667951248586177825927734375
Jo, also die Genauigkeit ist so lala. Ich sehe hier 6 richtige Nachkommastellen. Ich hatte selbst auch mal ein Verfahren für PI implementiert, das war allerdings so, dass es bei falschen Berechnungen sich nicht mehr selbst korrigiert hat. D.h., erst wurde es immer richtiger, aber irgendwann ist durch die Rechengenauigkeit wieder alles falsch geworden :smile: