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?

È stato utile?

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.

printf manuale :

"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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top