2010-03-21 10 views
32

Me gustaría poder escribir una cadena de tiempo que se vea así: 1:04:02.1 hours usando printf.
cuando trato de escribir algo como esto:Ceros adicionales al imprimir float usando printf?

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

me sale:

1:04:2.1 hours 

¿Es posible añadir ceros a la izquierda a un formato de flotación?

Respuesta

59

Con el especificador de formato %f, el "2" se trata como el número mínimo de caracteres en total, no el número de dígitos antes del punto decimal. Por lo tanto, debe reemplazarlo por 4 para obtener dos dígitos principales + el punto decimal + un dígito decimal.

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

genial, trabaja. para 2 lugares decimales, entonces necesitas% 05.2f – steveh

+0

tener esto para no flotar también es bueno! – wuppi

12

Pruebe %04.1f en lugar de %02.1f. El "4" aquí significa que se imprimirán al menos 4 caracteres, y "2.1" tiene 3 (> 2) caracteres, por lo que para habilitar los ceros de relleno necesita 4.

Cuestiones relacionadas