double Wert schreiben
-
hallo,
ich moechte einen double wert in eine binaerdatei schreiben. warum klappt das nicht mit dem wert 10, er schreibt dann naemlich 10.000000000000 heraus also einen riesengrossen wert, d.h er sieht den punkt nicht als einen "trenner" an.
was geht da ab?
-
nochmal weiss jemand warum ich den double wert 10 also 10.000000000000 nicht in eine binaedatei schreiben kann, da in dieser der wert dann als 10000000000000 ausgegeben wird, ich meochte aber den wert 10 also im hexeditor 0A stehen haben!!!!
-
printf("%.0f",double_value);
mehr dazu entnimmst du der printf(3) Dokumentation
-
Das steht alles in der Dokumentation zu fprintf ... (.)
Wenn in der Textdatei 10 steht, dann ist das übrigens im Hexeditor nicht 0x0A. Wenn Du das willst, dann musst Du 'putchar(0x0A)' schreiben.
-
hallo,
ich moechtes mit fwrite schreiben!
-
fwrite ist zum Schreiben von binären Daten da. Wenn Du die gesamte Binärstruktur eines doubles abspeichern willst, dann geht das mit 'fwrite (&d, sizeof d, 1, f)', aber dabei kannst Du keine Rundungen etc vornehmen. Du kannst natürlich den Nachkommateil abschneiden (hängt von deinem Format für doubles ab), dann kannst Du die Daten aber nicht mehr vernünftig lesen.
-
@Daniel E.
tja genau so schreibe ich es auch in die binaerdtei. nur gibt er mir nicht den wert 10 aus, dann waere naemlich das erste byte mit 10 belegt, sondern er belegt die letzten beiden bytes (also byte 7 und 8).
-
Die Binärcodierung von 10.0 ist ja auch nicht identisch mit der von 10 als int.
-
@Bashar
kannst du mir das bitte erklaern, wenn ich 10.0 mit fwrite in eine binaerdatei schreibe, wie ist dann das erste byte, das zweite byte... usw belegt, bzw wie wir double binaer belegt??
-
So in etwa: http://www.psc.edu/general/software/packages/ieee/ieee.html
Kernpunkte: Getrennt in Vorzeichen, Mantisse und Exponent; normalisiert; in 2er Potenzen
10 = 1.25*2^3, das dann in die entsprechenden Bitfelder einsetzen ...
-
muchas gracias