Ragazzi, ho un semplice problema:
Devo approssimare un double a 3 cifre dopo la virgola, c'è qualche funzione che lo fa?
Grazie
Ad esempio
MioDouble =123,45999
deve diventare
MioDouble = 123,456
Ragazzi, ho un semplice problema:
Devo approssimare un double a 3 cifre dopo la virgola, c'è qualche funzione che lo fa?
Grazie
Ad esempio
MioDouble =123,45999
deve diventare
MioDouble = 123,456
Originariamente inviato da giudf
Ragazzi, ho un semplice problema:
Devo approssimare un double a 3 cifre dopo la virgola, c'è qualche funzione che lo fa?
Grazie
Ad esempio
MioDouble =123,45999
deve diventare
MioDouble = 123,456
a primo impatto ti consiglierei di usare il manipolatore
set precision(3)
esempio:
cout<<setprecision()<<0.123456
viene stampato 0.123
sempre che tu stia usando c++,cmq nn sono sicuro di cio' mi pare di ricordare una cosa del genere
No, purtroppo il mio programma lo devo realizzare in C
a meno che nn risponda qualcun altro prima
ti consiglio di fare una ricerca per la rete
sotto la voce
MANIPOLATORI
e sicuramente troverai quello che cerchi
Beh ... 123.456 non ha senso ... forse volevi dire 123.46 e quindi, in C, per visualizzare tale valore puoi scrivereOriginariamente inviato da giudf
Ragazzi, ho un semplice problema:
Devo approssimare un double a 3 cifre dopo la virgola, c'è qualche funzione che lo fa?
Grazie
Ad esempio
MioDouble =123,45999
deve diventare
MioDouble = 123,456
printf("%.2f\n", MioDouble);
Si, capisco quello che vuoi dirmi, però il mio scopo non è stamparlo, ma è inserirlo all'interno di una struttura con sole 3 cifre dopo la virgola, e poi quello che tu dici, pur essendo corretto non è equivalente a quello che serve a me, mi spiego meglio:
12,3499999
Approssimato è:
12,345
E non 12,349 che otterrei con il "metodo printf"
X entrare più nel dettaglio:
Ti ricordi, qualche settimana fa, tu mi hai dato delle "chicche" per convertire un double da NBO ad HBO e viceversa, bè usando le unioin, ed effettuando la conversione, il numero ottenuto, differisce da quello presente nel test del mio programma (fornito da professori), di qualche cifra decimale (quelle appunto citate sopra il risultato deve essere 12,345 mentre io ottengo tanti 9 dopo il 4)!!!
Ovviamente il test mi fallisce perchè i numeri sono diversi e non ottengo il punteggio che mi serve, secondo te è un problema di conversione o no? Comunque sia credo che con un approssimazione della terza cifra, riuscirei a risolvere il problema.
P.S Se non ti ricordi la funzioncina che mi avevi suggerito fammelo sapere che te la scrivo!!
No, errore mio. Tutto risolto, avevo fatto il seguente errore
Anzichè prendere da file il double nel seguente modo:
fread(PuntatoreADouble,sizeof(double),1,FP);
converti(&PuntatoreADouble);
avevo fatto il seguente stupido errore:
fread(PuntatoreADouble,sizeof(double *) ....
La funzione l'ho finita ed ho ottenuto il 100% del punteggio, quindi ti ringrazio anche per il tuo aiuto !