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.087843
180
0.7134369
61
-0.042832833
-1.000682950
<-- agiunto il 50 finale
-0.382641
196
-1.000682950
<-- aggiunto il 50 finale
-0.7016364
34
Il programma scritto è il seguente:
codice:
#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?
???