Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » txt.Datei mit Fließkommazahlen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
07.02.2007, 20:50 Uhr
~sestefanhome
Gast


Ich versuche gerade mal eine txt.Datei einzulesen mit folgendem Inhalt:


Code:

1 0 0 -36.6508010 -545.339752 437.072622



Mit dem Quelltext:


C++:
ifstream datein;
datein.open("C:\\Daten.txt");

int a, b, c;
double d, e, f;

datein >> a >> b >> c >> d >> e >> f;

ofstream datauss;
datauss.open("C:\\Ausgabe.txt");

datauss << a << " " << b << " " << c << " " << d << " " << e << " " << f;

datauss.close();
datein.close();



Die Ausgabe sieht allerdings so aus:


Code:

1 0 0 -36.6508 -545.34 437.073



Er schreibt mir also nicht alle Nachkommastellen aus. Hab es schon mit atoi() und atof() probiert, geht aber auch nicht. Vielleicht mache ich aber auch was falsch. Kann mir jemand helfen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.02.2007, 21:12 Uhr
Suba Esel



Ich würd einfach für jede Zahl eine neue Zeile beginnen und dann mit getline einlesen. Man kann auch glaube ich irgendwie die Ausgabegenauigkeit einstellen, ich glaube das ging mit "setprecision" aus der iomanip, bin mir aber nicht ganz sicher, ob das was hilft.
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.02.2007, 21:14 Uhr
Blubber2063



Das mit dem getline bringt aber keinen Vorteil, die Frage ob die Ausgabegenauigkeit schuld ist, ist noch eine andere, Gleitkommawerte sind meist Fehlerbehaftet, du könntest also beim einlesen an Genauigkeit verlieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.02.2007, 21:18 Uhr
Suba Esel



Ich hätte jetzt gedacht, dass das Problem ist, dass der nicht die ganze Zahl einliest, deshalb war das mein Vorschlag

Das mit der Ausgabegenauigkeit überprüf ich grade, Moment
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.02.2007, 21:24 Uhr
Suba Esel



Mmh! Die Funktion std::setprecision (int n) gibts zwar, aber sie bewirkt nichts. Egal, ob ich 0, 2 oder 10 einstelle, das Ergebnis ist immer das selbe.
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.02.2007, 22:00 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


so muss man setprecision benutzen:

C++:
datauss << setprecision(10) << a << " " << b << " " << c << " " << d << " " << e << " " << f;


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.02.2007, 22:01 Uhr
~sestefanhome
Gast


Hab das jetzt auch mal mit std::setprecision (int n) probiert und funktioniert sogar. Darauf bin ich irgendwie nicht gekommen. Bleiben denn auch alle Nachkommastellen nach dem einlesen im Speicher, wenn ich damit weiterrechnen möchte?


C++:
ifstream datein;
datein.open("C:\\Daten.txt");

int a, b, c;
double d, e, f;

datein >> a >> b >> c >> d >> e >> f;

ofstream datauss;
datauss.open("C:\\Ausgabe.txt");
datauss << setprecision(9); // setze Ausgabe auf 9 Dezimalstellen
datauss << a << " " << b << " " << c << " " << d << " " << e << " " << f;

datauss.close();
datein.close();

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
23.02.2007, 20:25 Uhr
berniebutt



Du solltest dir mal klar machen, was eine Gleitkommazahl ist. Die Genauigkeit im Speicher
bestimmt allein der Datentyp, hier double. setprecision(9) macht das schon. Setze vorher
noch ein setw(20) für die Breite der Ausgabe hinzu, dann hast du noch schöner, was du willst.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
23.02.2007, 20:46 Uhr
Hans
Library Walker
(Operator)



Zitat:
Du solltest dir mal klar machen, was eine Gleitkommazahl ist.

Ein sehr ausführlicher Aufsatz dazu steht hier.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 23.02.2007 um 20:47 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: