PDA

Visualizza la versione completa : [C] Lettura da file di numeri in virgola mobile


Ol3iconfini
28-05-2007, 21:41
Salve, sottopongo il seguente problema...
Ho un file costituito da un numero in virgola mobile per riga. I numeri in virgola mobile hanno un numero di cifre dopo la virgola variabile (9 cifre max).


-1.0878432
0.71343694
-0.042832833
-1.0006829
-0.38264121
-1.0006829
-0.70163645


Quando vado a memorizzare il valore di ogni riga in un array e poi vado a riscrivere i valori memorizzati nell' array perdo inevitabilmente la precisione delle ultime cifre o invece di riscrivere lo stesso numero di cifre ne perdo l' ultima...
Mi spiego con un esempio:


-1.087843180
0.713436961
-0.042832833
-1.000682950 <-- agiunto il 50 finale
-0.382641196
-1.000682950 <-- aggiunto il 50 finale
-0.701636434

Il programma scritto il seguente:

#include<stdlib.h>
#include<stdio.h>

int main() {
FILE *fd1;
int i;
float vettore[esempi];
int esempi=7;
/*legge il file*/
fd1 = fopen ("file1", "r");
if ( fd1 == NULL) {
perror("Errore in apertura del file");
exit(1);
}
for(i=0; i<esempi; i++){
fscanf(fd1, "%f", &vettore[i]);
printf("%.9f\n", vettore[i]);
}
fclose(fd1);
return 0;
}

C' un modo per memorizzare il numero preciso senza troncamenti o modifiche?
???

oregon
28-05-2007, 22:08
Non

float

ma

double

P.S. Ovviamente deve essere

fscanf(fd1, "%lf", &vettore[i]);

(nota %lf e non %f)

Ol3iconfini
29-05-2007, 01:17
Grazie Oregon.
Se non specifico il numero di cifre dopo la virgola per default ne mette 6. Per cui accetto qualche zero finale con
%.9lf

CIao.

Loading