Come g% round up numeri in virgola mobile?
-
27-09-2019 - |
Domanda
Mentre io sto usando %g
come di formato in printf()
, a volte arrotonda fino a 2 posti dopo la virgola, a volte fino 3 posti, someimes fino a 4 posti ... come si fa?
In realtà in cui dovremmo usare %g
invece di %f
o %e
per i numeri in virgola mobile?
Soluzione
L'identificatore di formato %g
fa il suo arrotondamento proprio come %f
avrebbe fatto, ma se %f
comporterebbe 4.234000
, poi %g
sarà omettere gli zeri finali e stampare 4.234
.
%g
dovrebbe essere usato quando si ha più senso nel vostro formato di output che alcuni numeri sono stampati come 12345.6
, mentre un numero leggermente più grande sarebbe essere stampato come 1.235e04
.
Altri suggerimenti
%g
automaticamente 'ribalta' tra l'utilizzo %e
e %f
seconda del valore, nel tentativo di visualizzazione quante più informazioni possibile, nello stesso modo come calcolatori portatili fanno.
Inoltre, con gli zeri finali %g
e punto decimale non sono inclusi.
Per la conversione %f
, la “precisione” è il numero di cifre dopo la virgola , mentre per %g
è il numero di significativi le cifre.
La precisione di default è 6 in entrambi i casi.
"Il doppio argomento viene convertito in stile foe (o F o E per conversioni G). La precisione specifica il numero di cifre significative. Se la precisione è mancante, 6 cifre sono date; se la precisione è zero, viene trattata come viene usato 1. Stile e se l'esponente dalla sua conversione è inferiore a -4 o maggiore o uguale alla precisione. zeri finali vengono rimossi da la parte frazionaria del risultato; un punto decimale appare solo se è seguito da almeno una cifra. "
Non dire a "RTFM", ma probabilmente trovare quello che stai cercando in sezioni manuali sul controllo di precisione e la durata.