fscanf
-
Hi Zusammen,
ich möchte mittels "fscanf" Float-Zahlen mit zwei Komma-Stellen aus einer Datei einlesen. Beim Einlesen der Zahl mittels fscanf("%f\n", &a[i]) und späterer Ausgabe in einer Datei wird die Zahl 2.31 als 2.310010 ausgegeben.
Gibt es eine Möglichkeit dass fscanf die genaue Anzahl an Nachkommastellen einliest und nicht die maximal mögliche Anzahl?Cheers
-
Hi,
wenn du eine Float-Zahl speicherst, dann werden 4 Byte gespeichert.
Beim Einlesen werden 4 Byte eingelesen.
In beiden Fällen ist die maximale Genauigkeit stets enthalten.
-
mr.creasy schrieb:
Beim Einlesen der Zahl mittels fscanf("%f\n", &a[i]) und späterer Ausgabe in einer Datei wird die Zahl 2.31 als 2.310010 ausgegeben.
Sie wird eben nicht beim Einlesen ausgegeben.
Für das IEEE- Float- Format einfacher Genauigkeit sind eben 2.31 und 2.31001 identisch. Das ist die interne Ungenauigkeit des Formats.
Verwende einen Formatstring, der bei der Ausgabe auf die gewünschten Dezimalen kappt und fertig ist der Zauber
-
Hi danke für die schnelle Antwort,
hatte das Problem gerade schon selbst gelöst. Zahl war zu lang für float. Hätte sie müssen als double einlesen. Deswegen die falsche Ausgabe mit printf.
Cheers
-
mr.creasy schrieb:
hatte das Problem gerade schon selbst gelöst. Zahl war zu lang für float. Hätte sie müssen als double einlesen. Deswegen die falsche Ausgabe mit printf.
Irrtum
Du erhöhst nur die interne Genauigkeit, bei der 2.31 und 2.31001 noch unterschieden werden können. Das enthebt Dich aber nicht der Pflicht, bei der Ausgabe passend zu maskieren