Double - Genauigkeit
-
Hallo allerseits. Bei folgendem Code Stück:
#include <cstdlib> #include <iostream> #include <string> #include <sstream> using namespace std; int main(int argc, char *argv[]) { long double x; cin>>x; cout<<x<<'\n'; long int s = static_cast<int>(x) ; //x abgerundet long double w = x-(static_cast<long double>(s)); //nur die 0, .. die //Nachkomastellen von x cout<<w<<'\n'; string y; stringstream z; z<<w;// W in einen z>>y; // String schieben cout<<y<<'\n'; cout<<"Anzahl der Nachkommastellen:"<<(y.size()-2)<<'\n'; //die Anzahl der //Nachkommastellen ausgeben system("PAUSE"); return EXIT_SUCCESS; }
,welches ich unter Windwos, mit Dev C++ compiliert habe, fiel mir auf, dass schon in Zeile 2, in welcher x ausgegeben wird, x auf 5 Nachkommastellen gerundet wurde.
2 Fragen:
1.Warum ist die Anazahl der Nachkommastellen von x 6, wenn nur 5 ausgebenen werden?
2. 6 Nachkommastellen ist ein bisschen wenig. Gibt es eine Möglickeit das Ganze zu beeinflussen(bzw. mache ich etwas falsch??), ohne auf zustätzliche
Biblitheken zuzugreifen zu müssen?Danke im Vorraus (Warum auch immer das Wort Vor - raus zensiert wird)
-
Ist AFAIK die "Standardeinstellung" des Streams. Siehe auch Doku.
Bye, TGGC (Für echte Fans)
-
rgernha schrieb:
(Warum auch immer das Wort Vor - raus zensiert wird)
Deshalb:
http://www.duden.de/index_duden_suche.php?3b97f4f442c94bcd1721c7c24a7b1b4f1/suche/
Suche nach voraus: 2 Treffer
Suche nach vorraus: 0 Treffer
noch Fragen?
-
Für die Streams schau mal hier, unter setprecision
http://www.cppreference.com/io_flags.html#format_flagsFür vorraus ins Wörterbuch, alternativ auch unter "voraus"
-
Okay, damit ist mein Problem gelöst. Vielen Dank an alle