|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
|
[C] printf stampare formato esponenziale
ciao a tutti.
Ho questo problema: devo stampare dei valori in forma esponenziale, se stampo ad esempio con %20.16e ottengo un numero del tipo 2.4556432234566773e-4 io invece vorrei che il valore prima della virgola sia sempre 0 vorrei dunque stampare : 0.24556432234566773e-3 esiste qualche parametro da aggiungere al formato di stampa in modo da poter stampare lo 0 come parte intera ?
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Non che mi risulti, direi che ti tocca prima normalizzare i numeri e poi stamparli.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
|
cosa intendi per normalizzare i numeri ?
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2 |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Dividerli per 10 finché le cifre non sono tutte dopo la virgola.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
|
beh se divido per 10 il numero cambia, non è quello che voglio
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2 |
|
|
|
|
|
#6 | |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
- Utilizzare la funzione sprintf per ottenere il numero in formato stringa. - Effettuare il parsing della stringa e ricavarne le varie parti(esponente, parte frazionaria, parte intera). - Spostare il separatore decimale di k posti verso sinistra e incrementare di conseguenza l'esponente di k unità(nell'esempio che hai mostrato, il separatore si sposta di una posizione; dunque, -4 + 1 = -3). - Alla fine, grazie a Dio, si stampa la stringa cosi ottenuta Ultima modifica di Vincenzo1968 : 09-10-2008 alle 17:28. |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
|
eh si, alla fine mi sà dovrò fare una function per realizzare questa cosa,
speravo ci fosse qualche parametro della printf a me sconosciuto, ma pare che nn ci sia :S grazie !
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2 |
|
|
|
|
|
#8 | |
|
Member
Iscritto dal: Aug 2004
Messaggi: 39
|
Quote:
Codice:
void print_double(FILE *stream, double d, int width, int precision)
{
int e = 0;
if (d != 0.0) {
while (fabs(d) >= 1)
{
d /= 10;
e++;
}
while (fabs(d) < 0.1)
{
d *= 10;
e--;
}
fprintf(stream, "%*.*lfe%d", width, precision, d, e);
}
else {
fprintf(stream, "%*.*lf", width, precision, d);
}
}
Oppure si potrebbe fare così: Codice:
void print_double(FILE *stream, double d, int width, int precision)
{
if (d != 0.0) {
int e = log10(d) + 1;
d /= pow(10, (double)e);
fprintf(stream, "%*.*lfe%d", width, precision, d, e);
}
else {
fprintf(stream, "%*.*lf", width, precision, d);
}
}
Non è quello che volevi?
__________________
Quello che davvero mi interessa è se Dio, quando creò il mondo, aveva scelta. |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
|
si perfettamente... solo che speravo ci fosse qualche opzione della printf...
grazie dell'aiuto ! ciao
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:06.




















