Ciao a tutti,
dovrei acquisire da tastiera una serie di numeri (interi e double) e trascriverli su file. Fino a qui tutto bene, però nel file i numeri dovrebbero essere trascritti esattamente come sono, cioè, per esempio se l'utente insersce 2 nel file devo trascrivere 2 e non 2.000000, allo stesso modo se viene inserito 2.55 devo trascrivere 2.55 e non 2.550000.
Ho già risolto il problema quando il numero è intero:
Con il controllo dell'if sono riuscito a rosolvere il problema quando viene inserito un numero intero, ma come posso fare per ottenere un risultato simile anche dentro l'else, cioè quando viene inserito un double?codice:double numero; FILE *finput; //puntatore al file for(i = 0; i < n; i++) { printf("Inserire un numero: "); scanf("%lf", &numero); if(numero == (double)(int)numero) //controllo se il numero inserito è un intero fprintf(finput, "%d ", (int)numero); //se il numero è intero viene scritto su file con %d else fprintf(finput, "%lf ", numero); //altrimenti viene scritto usando %lf }
Non posso usare una cosa del tipo:
fprintf(finput, "%.2lf ", numero);
perchè così facendo otterrei un risultato ottimale solo per i numeri che hanno due cifre decimali, mentre riamrrebbe uno zero se il numero ha una sola cifra decimale oppure verrebbe troncato se ha più di due cifre decimali.
Grazie

Rispondi quotando