Su especificador de formato es incorrecto. Desde la página printf()
hombre en mi máquina:
0
Un cero '0
' carácter que indica que relleno con ceros se debe utilizar en lugar de blanco-relleno. A '-
' reemplaza '0
' si se utilizan ambos;
Ancho del campo: Cadena de dígitos opcional que especifica campo ancho; si la cadena de salida tiene menos caracteres que el ancho del campo, se rellenará en blanco a la izquierda (o derecha, si se ha proporcionado el indicador de ajuste a la izquierda) para compensar el ancho del campo (tenga en cuenta que un cero a la izquierda es una bandera, pero un cero incrustado es parte de un ancho de campo);
Precisión: Un periodo opcional, '.
', seguido de una cadena de dígitos opcional que proporciona una precisión que especifica el número de dígitos que aparecen después del punto decimal, por e y f formatos, o la número máximo de caracteres a imprimir desde una cadena; si falta la cadena de dígitos, la precisión se trata como cero;
Para su caso, el formato sería %09.3f
:
#include <stdio.h>
int main(int argc, char **argv)
{
printf("%09.3f\n", 4917.24);
return 0;
}
Salida:
$ make testapp
cc testapp.c -o testapp
$ ./testapp
04917.240
Tenga en cuenta que esta respuesta está condicionada a su sistema embebido tener una implementación printf()
es decir de normas compatible con estos detalles: muchos entornos integrados no tienen tienen dicha implementación.
Gracias, veo el error que estaba cometiendo. Lo tengo trabajando en la PC, mi sistema embebido aún no formateado correctamente, tendrá que darle un vuelco. –
Tenga en cuenta que Microsoft printf() aparentemente no es [compatible con los estándares] (https://msdn.microsoft.com/en-us/library/8aky45ct (v = vs.100) .aspx) al poner ceros a la izquierda en un flotante- número de punto – ulatekh