Ausgabe Formatieren
-
Hallo,
ich habe ein Problem mit der Speicherung und Ausgabe eines double Wertes. Ich möchte gerne eine zufällig generierte Zahl in einem double speichern. Dies gelingt auch, aber ich erhalte eine Zahl mit mehr als 2 Nachkommastellen. Nun würde ich diese gerne hinter der zweiten Nachkommastelle zu 0 machen.
Beim speichern des double Wertes in einer Textdatei wird ebenfalls nicht die Zahl komplett gespeichert sondern die Exponentialschreibweise geschrieben wodurch beim Einlesen Ziffern verloren gehen. Nun meine Frage. Gibt es eine Möglichkeit ohne Hilfe von Arrays das Problem zu lösen?
Vielen Dank schon mal!
Gruß
Patric
-
Hallo,
nix leichter als das:
#include <iostream> #include <fstream> #include <iomanip> using namespace std; int main() { double zahl = 1.245530; ofstream output("test.txt"); cout << setprecision(3) << zahl <<endl; // Ausgabe auf Bildschirm... output << setprecision(3) << zahl; //...und in Datei }
-
Du kannst auch sprintf nehmen (jaja lässt sich drüber streiten)
-
Mit precision wird nur die Anzeige auf die Stellenzahl formatiert, im Speicher bleibt es in voller Schönheit mit allen Nachkommastellen!
Eine Möglichkeit ist: Variable mit 100 multiplizieren, in Int wandeln (falls Zahl kleiner als 4,196 Milliarden), wieder nach double wandeln und mit 100 multiplizieren.
Übrigens: Gute Hilfe war mir bei so was: D. May; Grundkurs Software-Entwicklung mit C++; guck mal bei Amazon!
Viel Spass
Jerry
-
Mit precision wird nur die Anzeige auf die Stellenzahl formatiert, im Speicher bleibt es in voller Schönheit mit allen Nachkommastellen!
Eine Möglichkeit ist: Variable mit 100 multiplizieren, in Int wandeln (falls Zahl kleiner als 4,196 Milliarden), wieder nach double wandeln und mit 100 multiplizieren.
Übrigens: Gute Hilfe war mir bei so was: D. May; Grundkurs Software-Entwicklung mit C++; guck mal bei Amazon!
Viel Spass
Jerry
-
Hallo,
Danke an alle Poster! Setpreciosion(int) ist in der Tat nur für das Formatieren der Ausgabe. Jerry's Idee kam mir auch schon. Ist halt nur etwas "unelegant". Nunja, hab das Problem jetzt anderweitig gelöst.
PS: Werd mir mal das Buch anschauen.
Gruß
Patric