Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » double in file schreiben? nachkommastellen?

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
22.04.2004, 19:40 Uhr
~soar
Gast


hi

mal ne interessante frage, ich hab da so nen filestream..

C++:
ofstream *fos;

fos= new ofstream("file.txt", ios_base::out | ios_base::trunc);
if (fos->is_open())
{
  double d = 12434.9465386;
  fos->operator <<(d);
  fos->close();
}
...




und im file steht dann der double nur mit 1 kommastelle
nämlich 12434.9, weiß jemand warum das so ist und wie ich das umgehe?

also er lässt die anderen ned weg, er rundet auch
z.b. 38099.79003482

kommt 38099.8 raus.

thx
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.04.2004, 19:51 Uhr
~soar
Gast


ha schon gefunden z.b. mit


C++:
fos->precision(40);



lässt die anzahl der nachkommastellen einstellen!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.04.2004, 22:50 Uhr
icharno



ich kenne mich mit den c++-streams nicht aus, aber verlust von genauigkeit nur dann, wenn der numerische Wert in eine Zeichenkette gewandelt wird. auch nur hier hat precision eine Wirkung. zudem sind 40 Nachkommastellen nicht sinnvoll
die Mantisse hat 21 bit ( in etwa ) das sind keine 15 Nachkommastellen im Dezimalsystem

wenn man double 32bit als binaeren Wert in eine Datei schreibt

write() mit filedescriptoren fd
write( fd,(char*)d,sizeof(double) );

oder fwrite mit FILE* ( Binaermodus : fopen( path, "ba" ) )
fwrite( (char*)d,sizeof(double),1,F );
2. und 3. Arg tauschen ? kann ich mir nicht merken

geht nichts verloren. und man spart platz: 4Byte gegen 40Byte fuer die Nachkommastellen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.04.2004, 09:26 Uhr
theosoft



hello!

natürlich kann man auch in eine Instanz von fstream Daten binär schreiben.

C++:
fos= new ofstream("file.bin", ios_base::bin);


greets, Theo
--
ifS (immer fröhliches Schaffen)
theosoft

Dieser Post wurde am 27.04.2004 um 09:27 Uhr von theosoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: