2010-03-21 20 views
32

Mi piacerebbe essere in grado di scrivere una stringa temporale simile a questa: 1:04:02.1 hours utilizzando printf.
Quando tento di scrivere qualcosa del genere:Altri zeri iniziali quando si stampa float usando printf?

printf("%d:%02d:%02.1f hours\n", 1, 4, 2.123456); 

ottengo:

1:04:2.1 hours 

E 'possibile aggiungere zeri iniziali a una formattazione galleggiante?

risposta

59

Con l'identificatore di formato %f, il "2" viene considerato come il numero minimo di caratteri, non il numero di cifre prima del punto decimale. Quindi devi sostituirlo con 4 per ottenere due cifre iniziali + il punto decimale + una cifra decimale.

printf("%d:%02d:%04.1f hours\n", 1, 4, 2.123456); 
+1

ottimo, funziona. per 2 cifre decimali quindi è necessario% 05.2f – steveh

+0

avere questo per i non-float è anche bello! – wuppi

12

Provare %04.1f anziché %02.1f. Il "4" qui significa che saranno stampati almeno 4 caratteri e "2.1" ha 3 (> 2) caratteri, quindi per abilitare gli zeri padding necessari 4.

Problemi correlati