Einlesen von Fließkommazahlen (Datenverlust)
-
Hi Leute,
ich hab folgendes problem:
ich lese eine datei ein die in jeder zeile eine float-zahl enthält (zB. 12.42)
und speicher diese in einem array.
doch wenn ich diese zahl wieder ausgebe ergibt sich zB. folgendes 12.41999hat jemand eine ahnung wie es dazu kommt?
Quellcode:
#include<stdio.h> void main (void) { int i=0; float Feld[200]; //double Feld[200]; FILE *datei; if ( (datei = fopen("pj-20", "r")) != NULL) { while(fscanf(datei,"%f",&Feld[i])!= EOF) { printf ("%f\n", Feld[i]); i++; } fclose (datei); }else printf("Fehler beim Lesen der Datei!"); printf ("\n\n"); }
Datei:
98.30 55.88 9.64 83.96 35.88 7.64 73.82 54.85 63.07 3.98 48.93 50.90 70.35 3.23 22.74 6.98 70.72 74.80 95.84 60.95
Ausgabe:
http://80.190.202.79/pic/f/five/ausgabe.jpg-------------------------------------------------------------------
evtl. wichtig: die datei hat keine datei endung (wie zB .txt)
der dateiname ist pj-20
ihr könnt sie hier runterladen falls sie von nutzen ist http://www.bwinf.de/uploads/media/pj-klein.zip
-
Das altbekannte Genauigkeitsproblem bei Gleitkommazahlen - der Computer kann Brüche nicht exakt darstellen (Stichwort "IEEE 754") und rundet sie deshalb ein wenig.
-
Du kannst bei printf() auch die Ausgabegenauigkeit angeben:
printf("%.2f", fValue);
-
hmm.. schade.. da muss ich mir wohl was einfallen lassen
nochmals Vielen Dank!
-
@five: hattest du meinen Beitrag gelesen?